Skip to content
This repository has been archived by the owner on Jun 21, 2023. It is now read-only.

Commit

Permalink
[map] expose getter for the view used for rendering OpenGL on (#87)
Browse files Browse the repository at this point in the history
  • Loading branch information
tobrun authored and Harsha Sura committed Apr 27, 2020
1 parent 24cde46 commit 4bfe9e7
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to

### Features
- Introduce OfflineManager.runPackDatabaseAutomatically(boolean) and remove the redundant OfflineRegion.deleteAndSkipPackDatabase() method [#78](https://github.com/mapbox/mapbox-gl-native-android/pull/78)
- Expose getter for the view used for rendering OpenGL content on [#87](https://github.com/mapbox/mapbox-gl-native-android/pull/87)

### Performance improvements
- Make network requests for expired resources lower priority than requests for new resources. ([#15950](https://github.com/mapbox/mapbox-gl-native/pull/15950))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
private NativeMap nativeMapView;
@Nullable
private MapboxMap mapboxMap;
private View renderView;

private AttributionClickListener attributionClickListener;
private MapboxMapOptions mapboxMapOptions;
private MapRenderer mapRenderer;
Expand Down Expand Up @@ -296,6 +298,7 @@ protected void onSurfaceCreated(GL10 gl, EGLConfig config) {
};

addView(textureView, 0);
renderView = textureView;
} else {
MapboxGLSurfaceView glSurfaceView = new MapboxGLSurfaceView(getContext());
glSurfaceView.setZOrderMediaOverlay(mapboxMapOptions.getRenderSurfaceOnTop());
Expand All @@ -308,6 +311,7 @@ public void onSurfaceCreated(GL10 gl, EGLConfig config) {
};

addView(glSurfaceView, 0);
renderView = glSurfaceView;
}

boolean crossSourceCollisions = mapboxMapOptions.getCrossSourceCollisions();
Expand Down Expand Up @@ -465,6 +469,20 @@ public boolean isDestroyed() {
return destroyed;
}

/**
* Returns the View used for rendering OpenGL.
* <p>
* The type of the returned view is either a GLSurfaceView or a TextureView.
* </p>
*
* @return the view used for rendering OpenGL
*/
@NonNull
@UiThread
public View getRenderView() {
return renderView;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isGestureDetectorInitialized()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.mapbox.mapboxsdk.testapp.maps

import android.opengl.GLSurfaceView
import android.support.test.annotation.UiThreadTest
import android.support.test.rule.ActivityTestRule
import android.support.test.runner.AndroidJUnit4
import android.view.TextureView
import android.view.ViewGroup
import com.mapbox.mapboxsdk.AppCenter
import com.mapbox.mapboxsdk.maps.MapView
import com.mapbox.mapboxsdk.maps.MapboxMapOptions
import com.mapbox.mapboxsdk.testapp.activity.FeatureOverviewActivity
import java.util.concurrent.CountDownLatch
import junit.framework.Assert.assertNotNull
import junit.framework.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class RenderViewGetterTest : AppCenter() {

@Rule
@JvmField
var rule = ActivityTestRule(FeatureOverviewActivity::class.java)

private lateinit var rootView: ViewGroup
private lateinit var mapView: MapView
private val latch: CountDownLatch = CountDownLatch(1)

@Test
@UiThreadTest
fun testGLSurfaceView() {
rootView = rule.activity.findViewById(android.R.id.content)
mapView = MapView(rule.activity)
assertNotNull(mapView.renderView)
assertTrue(mapView.renderView is GLSurfaceView)
}

@Test
@UiThreadTest
fun testTextureView() {
rootView = rule.activity.findViewById(android.R.id.content)
mapView = MapView(rule.activity,
MapboxMapOptions.createFromAttributes(rule.activity, null)
.textureMode(true)
)
assertNotNull(mapView.renderView)
assertTrue(mapView.renderView is TextureView)
}
}

0 comments on commit 4bfe9e7

Please sign in to comment.