diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt5/android/QtSurface.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt5/android/QtSurface.java | 103 |
1 files changed, 10 insertions, 93 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java index c499dc3898..f9f5f16845 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java @@ -1,7 +1,7 @@ /**************************************************************************** ** +** Copyright (C) 2014 BogDan Vatra <bogdan@kde.org> ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org> ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Android port of the Qt Toolkit. @@ -44,11 +44,7 @@ package org.qtproject.qt5.android; import android.app.Activity; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Rect; import android.graphics.PixelFormat; -import android.util.DisplayMetrics; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; @@ -60,61 +56,34 @@ import java.lang.reflect.Method; public class QtSurface extends SurfaceView implements SurfaceHolder.Callback { - private Bitmap m_bitmap = null; - private boolean m_started = false; - private boolean m_usesGL = false; private GestureDetector m_gestureDetector; private Object m_accessibilityDelegate = null; + private boolean m_onTop; - public QtSurface(Context context, int id) + public QtSurface(Context context, int id, boolean onTop) { super(context); setFocusable(false); setFocusableInTouchMode(false); - + m_onTop = onTop; + setZOrderMediaOverlay(onTop); getHolder().addCallback(this); + getHolder().setFormat(PixelFormat.RGBA_8888); getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU); setId(id); m_gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { public void onLongPress(MotionEvent event) { - if (!m_started) - return; QtNative.longPress(getId(), (int) event.getX(), (int) event.getY()); } }); m_gestureDetector.setIsLongpressEnabled(true); } - public void applicationStarted(boolean usesGL) - { - m_started = true; - m_usesGL = usesGL; - if (getWidth() < 1 || getHeight() < 1) - return; - if (m_usesGL) { - QtNative.setSurface(getHolder().getSurface()); - } else { - QtNative.lockSurface(); - QtNative.setSurface(null); - m_bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565); - QtNative.setSurface(m_bitmap); - QtNative.unlockSurface(); - } - } - @Override public void surfaceCreated(SurfaceHolder holder) { - DisplayMetrics metrics = new DisplayMetrics(); - ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); - QtNative.setApplicationDisplayMetrics(metrics.widthPixels, - metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi, metrics.scaledDensity); - - if (m_usesGL) - holder.setFormat(PixelFormat.RGBA_8888); - - + QtNative.setSurface(getId(), holder.getSurface(), getWidth(), getHeight()); // Initialize Accessibility // The accessibility code depends on android API level 16, so dynamically resolve it if (android.os.Build.VERSION.SDK_INT >= 16) { @@ -158,71 +127,21 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - if (width<1 || height<1) - return; - - DisplayMetrics metrics = new DisplayMetrics(); - ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); - QtNative.setApplicationDisplayMetrics(metrics.widthPixels, - metrics.heightPixels, - width, - height, - metrics.xdpi, - metrics.ydpi, - metrics.scaledDensity); - - if (!m_started) + if (width < 1 || height < 1) return; - if (m_usesGL) { - QtNative.setSurface(holder.getSurface()); - } else { - QtNative.lockSurface(); - QtNative.setSurface(null); - m_bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); - QtNative.setSurface(m_bitmap); - QtNative.unlockSurface(); - QtNative.updateWindow(); - } + QtNative.setSurface(getId(), holder.getSurface(), width, height); } @Override public void surfaceDestroyed(SurfaceHolder holder) { - if (m_usesGL) { - QtNative.destroySurface(); - } else { - if (!m_started) - return; - - QtNative.lockSurface(); - QtNative.setSurface(null); - QtNative.unlockSurface(); - } - } - - public void drawBitmap(Rect rect) - { - if (!m_started) - return; - QtNative.lockSurface(); - if (null != m_bitmap) { - try { - Canvas cv = getHolder().lockCanvas(rect); - cv.drawBitmap(m_bitmap, rect, rect, null); - getHolder().unlockCanvasAndPost(cv); - } catch (Exception e) { - Log.e(QtNative.QtTAG, "Can't create main activity", e); - } - } - QtNative.unlockSurface(); + QtNative.setSurface(getId(), null, 0, 0); } @Override public boolean onTouchEvent(MotionEvent event) { - if (!m_started) - return false; QtNative.sendTouchEvent(event, getId()); m_gestureDetector.onTouchEvent(event); return true; @@ -231,8 +150,6 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback @Override public boolean onTrackballEvent(MotionEvent event) { - if (!m_started) - return false; QtNative.sendTrackballEvent(event, getId()); return true; } |