summaryrefslogtreecommitdiffstats
path: root/src/android/java
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kdab.com>2016-04-12 18:33:17 +0300
committerBogDan Vatra <bogdan@kdab.com>2016-04-13 17:11:40 +0000
commitba30566b259e5f4282697be9a4e31940bebfd55b (patch)
treeef63654138a2784bf4fa9d141e9762a64236c0fc /src/android/java
parent40ece5edcfcc5674524332a4db500371cc109330 (diff)
Android: fix crash when subclassing the QtActivity
m_context.getClass() returns the top class and this way QtApplication can't find the proper class Name (QtActivity and QtService). This patch passes the right class names to QtLoader/QtApplication. Task-number: QTBUG-52373 Change-Id: Ib69446cdaa38ac8b489872c4850210e5d503492e Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Diffstat (limited to 'src/android/java')
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java2
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java5
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java6
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtServiceLoader.java2
4 files changed, 10 insertions, 5 deletions
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
index 92cea65e4b..2494035c60 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
@@ -55,7 +55,7 @@ public class QtActivityLoader extends QtLoader {
QtActivityLoader(QtActivity activity)
{
- super(activity);
+ super(activity, QtActivity.class);
m_activity = activity;
}
@Override
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
index 2afede6d66..1078060d7f 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
@@ -133,8 +133,11 @@ public class QtApplication extends Application
break;
}
}
+ if (-1 == stackDeep)
+ return result;
+
final String methodName=elements[stackDeep].getMethodName();
- if (-1 == stackDeep || !m_delegateMethods.containsKey(methodName))
+ if (!m_delegateMethods.containsKey(methodName))
return result;
for (Method m : m_delegateMethods.get(methodName)) {
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
index 3efdbf7a7c..d281cb0996 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
@@ -152,9 +152,11 @@ public abstract class QtLoader {
public int m_displayDensity = -1;
private ContextWrapper m_context;
protected ComponentInfo m_contextInfo;
+ private Class<?> m_delegateClass;
- QtLoader(ContextWrapper context) {
+ QtLoader(ContextWrapper context, Class<?> clazz) {
m_context = context;
+ m_delegateClass = clazz;
}
// Implement in subclass
@@ -235,7 +237,7 @@ public abstract class QtLoader {
if (!(Boolean)prepareAppMethod.invoke(qtLoader, m_context, classLoader, loaderParams))
throw new Exception("");
- QtApplication.setQtContextDelegate(m_context.getClass(), qtLoader);
+ QtApplication.setQtContextDelegate(m_delegateClass, qtLoader);
// now load the application library so it's accessible from this class loader
if (libName != null)
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtServiceLoader.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtServiceLoader.java
index e64018f0a8..60aecbf7b3 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtServiceLoader.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtServiceLoader.java
@@ -42,7 +42,7 @@ import android.content.pm.PackageManager;
public class QtServiceLoader extends QtLoader {
QtService m_service;
QtServiceLoader(QtService service) {
- super(service);
+ super(service, QtService.class);
m_service = service;
}