Android: Return QAndroidApplication instance via nativeInterface() getter
The QAndroidApplication native interface wrongly uses static methods instead of virtual functions, which has lead to client call sites not using the preferred QCoreApplication::nativeInterface() API to resolve the interface, and a lack of an implementation in QCoreApplication for the resolveInterface function. We now implement resolveInterface for Android, so that the interface can be resolved via QCoreApplication::nativeInterface(), even if the interface itself (for now) is based on static methods. Task-number: QTBUG-128796 Change-Id: Id4d8b9a6fcc7d0e2cc76de07dc0742dc5917f3ca Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 60f07671e1770c4f6fd71bbad7cf88ca35ab4de0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8f5b06f977
commit
4e66be84be
@ -43,6 +43,7 @@
|
||||
#include <private/qlocale_p.h>
|
||||
#include <private/qlocking_p.h>
|
||||
#include <private/qhooks_p.h>
|
||||
#include <private/qnativeinterface_p.h>
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
#include <private/qpermissions_p.h>
|
||||
@ -3406,6 +3407,16 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
|
||||
|
||||
void *QCoreApplication::resolveInterface(const char *name, int revision) const
|
||||
{
|
||||
#if defined(Q_OS_ANDROID)
|
||||
// The QAndroidApplication is wrongly using static methods for
|
||||
// its native interface (QTBUG-128796). Until we fix that we at
|
||||
// least want the preferred way of resolving a native interface
|
||||
// to work, so provide a minimal subclass of the interface.
|
||||
using namespace QNativeInterface;
|
||||
struct AndroidApplication : public QAndroidApplication {};
|
||||
static AndroidApplication androidApplication;
|
||||
QT_NATIVE_INTERFACE_RETURN_IF(QAndroidApplication, &androidApplication);
|
||||
#endif
|
||||
Q_UNUSED(name); Q_UNUSED(revision);
|
||||
return nullptr;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user