diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 957e150873..712e50db01 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1475,4 +1475,4 @@ extern "C" m2::PointD const pivot = m2::PointD(pivotX, pivotY); android::Platform::RunOnGuiThreadImpl(bind(&Framework::SetWidgetPivot, frm(), widgetType, pivot)); } -} // extern "C" +} // extern "C" \ No newline at end of file diff --git a/android/src/com/mapswithme/maps/MapFragment.java b/android/src/com/mapswithme/maps/MapFragment.java index 688902a345..b37946360e 100644 --- a/android/src/com/mapswithme/maps/MapFragment.java +++ b/android/src/com/mapswithme/maps/MapFragment.java @@ -22,8 +22,6 @@ public class MapFragment extends NvEventQueueFragment public static final String FRAGMENT_TAG = MapFragment.class.getSimpleName(); - private boolean mIsRenderingInitialized; - protected native void nativeStorageConnected(); protected native void nativeStorageDisconnected(); @@ -63,44 +61,24 @@ public class MapFragment extends NvEventQueueFragment } @Override - public void onStop() - { - super.onStop(); - mIsRenderingInitialized = false; - } - - @Override - protected void applyWidgetPivots(final int mapHeight, final int mapWidth) + protected void applyWidgetPivots() { final Resources resources = getResources(); - // TODO need a delay here to make call work - getView().postDelayed(new Runnable() - { - @Override - public void run() - { - Framework.setWidgetPivot(Framework.MAP_WIDGET_RULER, mapWidth - resources.getDimensionPixelOffset(R.dimen.margin_right_ruler), mapHeight - resources.getDimensionPixelOffset(R.dimen.margin_bottom_ruler)); - Framework.setWidgetPivot(Framework.MAP_WIDGET_COMPASS, resources.getDimensionPixelOffset(R.dimen.margin_left_compass), mapHeight - resources.getDimensionPixelOffset(R.dimen.margin_bottom_compass)); - } - }, 300); - } - - public boolean isRenderingInitialized() - { - return mIsRenderingInitialized; + Framework.setWidgetPivot(Framework.MAP_WIDGET_RULER, mSurfaceWidth - resources.getDimensionPixelOffset(R.dimen.margin_right_ruler), mSurfaceHeight - resources.getDimensionPixelOffset(R.dimen.margin_bottom_ruler)); + Framework.setWidgetPivot(Framework.MAP_WIDGET_COMPASS, resources.getDimensionPixelOffset(R.dimen.margin_left_compass), mSurfaceHeight - resources.getDimensionPixelOffset(R.dimen.margin_bottom_compass)); } @Override public void OnRenderingInitialized() { - mIsRenderingInitialized = true; - final Activity host = getActivity(); if (host != null && host instanceof MapRenderingListener) { final MapRenderingListener listener = (MapRenderingListener) host; listener.onRenderingInitialized(); } + + super.OnRenderingInitialized(); } @Override diff --git a/android/src/com/nvidia/devtech/NvEventQueueFragment.java b/android/src/com/nvidia/devtech/NvEventQueueFragment.java index 5e1a3f102c..914c5accb1 100644 --- a/android/src/com/nvidia/devtech/NvEventQueueFragment.java +++ b/android/src/com/nvidia/devtech/NvEventQueueFragment.java @@ -24,10 +24,11 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi private final Logger mLog = StubLogger.get(); + private boolean mIsRenderingInitialized; private EglWrapper mEglWrapper; protected SurfaceHolder mCachedSurfaceHolder; - private int mSurfaceWidth; - private int mSurfaceHeight; + protected int mSurfaceWidth; + protected int mSurfaceHeight; private int mDisplayDensity; @@ -80,6 +81,8 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi mDisplayDensity = metrics.densityDpi; mIsNativeLaunched = true; onCreateNative(); + if (getActivity().isChangingConfigurations()) + mIsRenderingInitialized = true; } @Override @@ -103,7 +106,6 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi { mCachedSurfaceHolder = holder; onSurfaceCreatedNative(mSurfaceWidth, mSurfaceHeight, mDisplayDensity); - applyWidgetPivots(mSurfaceHeight, mSurfaceWidth); } @Override @@ -113,7 +115,8 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi mSurfaceWidth = width; mSurfaceHeight = height; onSurfaceChangedNative(mSurfaceWidth, mSurfaceHeight, mDisplayDensity); - applyWidgetPivots(mSurfaceHeight, mSurfaceWidth); + if (mIsRenderingInitialized) + applyWidgetPivots(); } @Override @@ -125,7 +128,10 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi }); } - protected abstract void applyWidgetPivots(final int mapHeight, final int mapWidth); + /** + * Implement to position map widgets. + */ + protected abstract void applyWidgetPivots(); @Override public void onStart() @@ -161,8 +167,11 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi { super.onStop(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB || !getActivity().isChangingConfigurations()) + { // if configuration is changed - EGL shouldn't be reinitialized + mIsRenderingInitialized = false; onStopNative(); + } } @Override @@ -279,7 +288,16 @@ public abstract class NvEventQueueFragment extends BaseMwmFragment implements Vi } @SuppressWarnings("UnusedDeclaration") - public void OnRenderingInitialized() {} + public void OnRenderingInitialized() + { + mIsRenderingInitialized = true; + applyWidgetPivots(); + } + + public boolean isRenderingInitialized() + { + return mIsRenderingInitialized; + } @SuppressWarnings("UnusedDeclaration") public void ReportUnsupported()