summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
diff options
context:
space:
mode:
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.java103
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;
}