Merge pull request #898 from Bars107/qtcore

Qtcore
This commit is contained in:
vshcherb 2014-10-03 12:22:54 +02:00
commit 6883c0625b
7 changed files with 62 additions and 36 deletions

View file

@ -14,7 +14,7 @@ import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.render.NativeOsmandLibrary;
import android.app.Activity;
import android.content.Context;
@ -75,7 +75,7 @@ public class GLActivity extends Activity {
}
private boolean afterTwoFingerTap = false;
SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
afterTwoFingerTap = true;

View file

@ -777,4 +777,9 @@ public class MapActivity extends AccessibleActivity {
public View getLayout() {
return getWindow().getDecorView().findViewById(android.R.id.content);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mapViewController.onTouchEvent(event);
}
}

View file

@ -6,7 +6,7 @@ import android.view.ViewConfiguration;
/**
* Created by Barsik on 24.06.2014.
*/
public abstract class SimpleTwoFingerTapDetector {
public abstract class TwoFingerTapDetector {
private static final int TIMEOUT = ViewConfiguration.getTapTimeout() + 100;
private long mFirstDownTime = 0;
private byte mTwoFingerTapCount = 0;

View file

@ -0,0 +1,23 @@
package net.osmand.plus.render;
import net.osmand.NativeLibrary;
/**
* Created by Denis on 02.10.2014.
*/
public class NativeCppLibrary extends NativeLibrary {
public NativeCppLibrary(boolean newLibrary) {
super(newLibrary);
}
public static void loadLibrary(String name) {
try {
System.out.println("Loading " + name);
System.loadLibrary(name);
} catch( UnsatisfiedLinkError e ) {
System.err.println("Failed to load '"+name + "':" + e);
throw e;
}
}
}

View file

@ -23,7 +23,7 @@ import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.views.MultiTouchSupport.MultiTouchZoomListener;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
import net.osmand.plus.views.controllers.JavaViewController;
@ -81,9 +81,6 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
protected static final int emptyTileDivisor = 16;
public interface OnLongClickListener {
public boolean onLongPressEvent(PointF point);
}
@ -148,7 +145,7 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
private Paint paintImg;
private boolean afterTwoFingerTap = false;
SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
afterTwoFingerTap = true;

View file

@ -24,7 +24,6 @@ import java.util.List;
* Created by Натали on 29.09.2014.
*/
public class JavaViewController extends MapViewBaseController {
private GLSurfaceView glSurfaceView;
private OsmandMapTileView mapTileView;
private OsmandSettings settings;
private MapActivity mapActivity;

View file

@ -22,7 +22,8 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.MapActivityLayers;
import net.osmand.plus.base.MapViewTrackingUtilities;
import net.osmand.plus.helpers.SimpleTwoFingerTapDetector;
import net.osmand.plus.helpers.TwoFingerTapDetector;
import net.osmand.plus.render.NativeCppLibrary;
import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.plus.views.OsmandMapLayer;
import net.osmand.plus.views.OsmandMapTileView;
@ -36,14 +37,6 @@ import java.util.List;
*/
public class NativeViewController extends MapViewBaseController {
static {
NativeOsmandLibrary.loadLibrary("gnustl_shared");
NativeOsmandLibrary.loadLibrary("Qt5Core");
NativeOsmandLibrary.loadLibrary("Qt5Network");
NativeOsmandLibrary.loadLibrary("Qt5Sql");
NativeOsmandLibrary.loadLibrary("OsmAndCoreWithJNI");
}
private GLSurfaceView glSurfaceView;
private OsmandSettings settings;
private MapActivity mapActivity;
@ -74,7 +67,7 @@ public class NativeViewController extends MapViewBaseController {
public static final String NATIVE_TAG = "NativeRender";
private CoreResourcesFromAndroidAssets coreResources;
SimpleTwoFingerTapDetector twoFingerTapDetector = new SimpleTwoFingerTapDetector() {
TwoFingerTapDetector twoFingerTapDetector = new TwoFingerTapDetector() {
@Override
public void onTwoFingerTap() {
currentViewport.setZoom(currentViewport.getZoom() - 1);
@ -87,9 +80,18 @@ public class NativeViewController extends MapViewBaseController {
this.glSurfaceView = surfaceView;
this.settings = activity.getMyApplication().getSettings();
this.mapActivity = activity;
loadLibraries();
setupView();
}
private void loadLibraries() {
NativeCppLibrary.loadLibrary("gnustl_shared");
NativeCppLibrary.loadLibrary("Qt5Core");
NativeCppLibrary.loadLibrary("Qt5Network");
NativeCppLibrary.loadLibrary("Qt5Sql");
NativeCppLibrary.loadLibrary("OsmAndCoreWithJNI");
}
private void setupView() {
WindowManager mgr = (WindowManager)mapActivity.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
@ -252,8 +254,8 @@ public class NativeViewController extends MapViewBaseController {
}
private class EGLContextFactory implements GLSurfaceView.EGLContextFactory {
private EGLContext _gpuWorkerContext;
private EGLSurface _gpuWorkerFakeSurface;
private EGLContext gpuWorkerContext;
private EGLSurface gpuWorkerFakeSurface;
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
final String eglExtensions = egl.eglQueryString(display, EGL10.EGL_EXTENSIONS);
@ -280,7 +282,7 @@ public class NativeViewController extends MapViewBaseController {
Log.i(NATIVE_TAG, "Creating GPU worker context...");
try {
_gpuWorkerContext = egl.eglCreateContext(
gpuWorkerContext = egl.eglCreateContext(
display,
eglConfig,
mainContext,
@ -288,13 +290,13 @@ public class NativeViewController extends MapViewBaseController {
} catch (Exception e) {
Log.e(NATIVE_TAG, "Failed to create GPU worker context", e);
}
if (_gpuWorkerContext == null || _gpuWorkerContext == EGL10.EGL_NO_CONTEXT)
if (gpuWorkerContext == null || gpuWorkerContext == EGL10.EGL_NO_CONTEXT)
{
Log.e(NATIVE_TAG, "Failed to create GPU worker context: " + egl.eglGetError());
_gpuWorkerContext = null;
gpuWorkerContext = null;
}
if (_gpuWorkerContext != null)
if (gpuWorkerContext != null)
{
Log.i(NATIVE_TAG, "Creating GPU worker fake surface...");
try {
@ -302,21 +304,21 @@ public class NativeViewController extends MapViewBaseController {
EGL10.EGL_WIDTH, 1,
EGL10.EGL_HEIGHT, 1,
EGL10.EGL_NONE };
_gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList);
gpuWorkerFakeSurface = egl.eglCreatePbufferSurface(display, eglConfig, surfaceAttribList);
} catch (Exception e) {
Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface", e);
}
if (_gpuWorkerFakeSurface == null || _gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE)
if (gpuWorkerFakeSurface == null || gpuWorkerFakeSurface == EGL10.EGL_NO_SURFACE)
{
Log.e(NATIVE_TAG, "Failed to create GPU worker fake surface: " + egl.eglGetError());
_gpuWorkerFakeSurface = null;
gpuWorkerFakeSurface = null;
}
}
MapRendererSetupOptions rendererSetupOptions = new MapRendererSetupOptions();
if (_gpuWorkerContext != null && _gpuWorkerFakeSurface != null) {
if (gpuWorkerContext != null && gpuWorkerFakeSurface != null) {
rendererSetupOptions.setGpuWorkerThreadEnabled(true);
gpuWorkerThreadPrologue = new GpuWorkerThreadPrologue(egl, display, _gpuWorkerContext, _gpuWorkerFakeSurface);
gpuWorkerThreadPrologue = new GpuWorkerThreadPrologue(egl, display, gpuWorkerContext, gpuWorkerFakeSurface);
rendererSetupOptions.setGpuWorkerThreadPrologue(gpuWorkerThreadPrologue.getBinding());
gpuWorkerThreadEpilogue = new GpuWorkerThreadEpilogue(egl);
rendererSetupOptions.setGpuWorkerThreadEpilogue(gpuWorkerThreadEpilogue.getBinding());
@ -333,14 +335,14 @@ public class NativeViewController extends MapViewBaseController {
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
egl.eglDestroyContext(display, context);
if (_gpuWorkerContext != null) {
egl.eglDestroyContext(display, _gpuWorkerContext);
_gpuWorkerContext = null;
if (gpuWorkerContext != null) {
egl.eglDestroyContext(display, gpuWorkerContext);
gpuWorkerContext = null;
}
if (_gpuWorkerFakeSurface != null) {
egl.eglDestroySurface(display, _gpuWorkerFakeSurface);
_gpuWorkerFakeSurface = null;
if (gpuWorkerFakeSurface != null) {
egl.eglDestroySurface(display, gpuWorkerFakeSurface);
gpuWorkerFakeSurface = null;
}
}
}