[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin.spec
^
|
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer.pro
^
|
@@ -30,10 +30,18 @@
HEADERS += qsystrace_selector.h
-versionAtLeast(QT_MINOR_VERSION, 8) {
- QT += core-private gui-private egl_support-private waylandcompositor-private dbus fontdatabase_support-private eventdispatcher_support-private theme_support-private
-} else {
- QT += core-private compositor-private gui-private platformsupport-private dbus
+QT += core-private gui-private dbus
+
+equals(QT_MAJOR_VERSION, 5) {
+ versionAtLeast(QT_MINOR_VERSION, 8) {
+ QT += egl_support-private waylandcompositor-private fontdatabase_support-private eventdispatcher_support-private theme_support-private
+ } else {
+ QT += compositor-private platformsupport-private
+ }
+}
+
+equals(QT_MAJOR_VERSION, 6) {
+ QT += waylandcompositor-private opengl
}
enable-sensors {
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend.cpp
^
|
@@ -103,6 +103,15 @@
fprintf(stderr, "libminisf is incompatible or missing. Can not possibly start the SurfaceFlinger service. If you're experiencing troubles with media try updating droidmedia (and/or this plugin).");
}
+#ifdef HWC_PLUGIN_HAVE_HWCOMPOSER2_API
+ if (!qEnvironmentVariableIsEmpty("QT_QPA_FORCE_HWC2")) {
+ // Create hwcomposer backend directly without opening hardware module
+ // because on some devices loading hwc2 module twice breaks graphics
+ // (The first load is in the composer android service.)
+ return new HwComposerBackend_v20(NULL, libminisf);
+ }
+#endif
+
// Open hardware composer
if (hw_get_module(HWC_HARDWARE_MODULE_ID, (const hw_module_t **)(&hwc_module)) == 0) {
fprintf(stderr, "== hwcomposer module ==\n");
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend.h
^
|
@@ -42,12 +42,13 @@
#ifndef HWCOMPOSER_BACKEND_H
#define HWCOMPOSER_BACKEND_H
+#include <android-config.h>
+
#include <inttypes.h>
#include <sys/types.h>
#include <sync/sync.h>
#include <stdint.h>
-#include <android-config.h>
#include <hardware/hardware.h>
#include <hardware/hwcomposer.h>
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend_v0.cpp
^
|
@@ -38,7 +38,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <android-version.h>
+#include <android-config.h>
#if ANDROID_VERSION_MAJOR <= 4
#include <hardware/hwcomposer_defs.h>
#ifdef HWC_DEVICE_API_VERSION_0_1
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend_v11.h
^
|
@@ -49,6 +49,7 @@
// libhybris access to the native hwcomposer window
#include <hwcomposer_window.h>
+#include <QObject>
#include <QBasicTimer>
class HwcProcs_v11;
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend_v20.cpp
^
|
@@ -71,6 +71,7 @@
struct HwcProcs_v20 : public HWC2EventListener
{
HwComposerBackend_v20 *backend;
+ hwc2_display_t primaryDisplayId;
};
void hwc2_callback_vsync(HWC2EventListener* listener, int32_t /*sequenceId*/,
@@ -96,6 +97,10 @@
connected ? "connected" : "disconnected",
primaryDisplay ? "primary" : "external");
+ if (primaryDisplay) {
+ static_cast<HwcProcs_v20 *>(listener)->primaryDisplayId = display;
+ }
+
static_cast<const HwcProcs_v20 *>(listener)->backend->onHotplugReceived(
sequenceId, display, connected, primaryDisplay);
}
@@ -223,6 +228,11 @@
procs->on_hotplug_received = hwc2_callback_hotplug;
procs->on_refresh_received = hwc2_callback_refresh;
procs->backend = this;
+ // primaryDisplayId is not changed in this constructor
+ // but it may be changed by hwc2_callback_hotplug and thus the
+ // hwc2_compat_device_get_display_by_id loop will request the
+ // correct primary diplay once primaryDisplayId has been set.
+ procs->primaryDisplayId = 0;
hwc2_device = hwc2_compat_device_new(false);
HWC_PLUGIN_ASSERT_NOT_NULL(hwc2_device);
@@ -233,7 +243,7 @@
for (int i = 0; i < 5 * 1000; ++i) {
// Wait at most 5s for hotplug events
if ((hwc2_primary_display =
- hwc2_compat_device_get_display_by_id(hwc2_device, 0)))
+ hwc2_compat_device_get_display_by_id(hwc2_device, procs->primaryDisplayId)))
break;
usleep(1000);
}
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_backend_v20.h
^
|
@@ -50,6 +50,7 @@
#include <hybris/hwc2/hwc2_compatibility_layer.h>
+#include <QObject>
#include <QBasicTimer>
class HwcProcs_v20;
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_context.cpp
^
|
@@ -52,24 +52,8 @@
#include <qcoreapplication.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-
-#include <inttypes.h>
-#include <unistd.h>
-#include <signal.h>
-
-
QT_BEGIN_NAMESPACE
-
-static void exit_qt_gracefully(int sig)
-{
- qDebug("Exiting on signal: %d", sig);
- QCoreApplication::exit(0);
-}
-
HwComposerContext::HwComposerContext()
: info(NULL)
, backend(NULL)
@@ -77,16 +61,6 @@
, window_created(false)
, fps(0)
{
- // We need to catch the SIGTERM and SIGINT signals, so that we can do a
- // proper shutdown of Qt and the plugin, and avoid crashes, hangs and
- // reboots in cases where we don't properly close the hwcomposer.
- struct sigaction new_action;
- new_action.sa_handler = exit_qt_gracefully;
- sigemptyset(&new_action.sa_mask);
- new_action.sa_flags = 0;
- sigaction(SIGTERM, &new_action, NULL);
- sigaction(SIGINT, &new_action, NULL);
-
// This actually opens the hwcomposer device
backend = HwComposerBackend::create();
HWC_PLUGIN_ASSERT_NOT_NULL(backend);
@@ -198,6 +172,4 @@
return false;
}
-
-
QT_END_NAMESPACE
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/hwcomposer_context.h
^
|
@@ -55,7 +55,9 @@
#include <QtGui/QImage>
#include <EGL/egl.h>
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/private/qeglplatformcontext_p.h>
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
#include <QtEglSupport/private/qeglplatformcontext_p.h>
#else
#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/qeglfsbackingstore.cpp
^
|
@@ -42,9 +42,15 @@
#include "qeglfsbackingstore.h"
#include "qeglfswindow.h"
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/QOpenGLContext>
+#include <QtOpenGL/QOpenGLPaintDevice>
+#include <QtOpenGL/QOpenGLShaderProgram>
+#else
#include <QtGui/QOpenGLContext>
#include <QtGui/QOpenGLPaintDevice>
#include <QtGui/QOpenGLShaderProgram>
+#endif
#include <QtGui/QScreen>
@@ -145,7 +151,11 @@
QRect imageRect = m_image.rect();
QRegion fixed;
- foreach (const QRect &rect, m_dirty.rects()) {
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ for (const QRect &rect : m_dirty) {
+#else
+ for (const QRect &rect : m_dirty.rects()) {
+#endif
// intersect with image rect to be sure
QRect r = imageRect & rect;
@@ -159,7 +169,11 @@
fixed |= r;
}
- foreach (const QRect &rect, fixed.rects()) {
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+ for (const QRect &rect : fixed) {
+#else
+ for (const QRect &rect : fixed.rects()) {
+#endif
// if the sub-rect is full-width we can pass the image data directly to
// OpenGL instead of copying, since there's no gap between scanlines
if (rect.width() == imageRect.width()) {
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/qeglfscontext.cpp
^
|
@@ -43,7 +43,9 @@
#include "qeglfswindow.h"
#include "qeglfsintegration.h"
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/private/qeglpbuffer_p.h>
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
#include <QtEglSupport/private/qeglpbuffer_p.h>
#else
#include <QtPlatformSupport/private/qeglpbuffer_p.h>
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/qeglfscontext.h
^
|
@@ -44,8 +44,10 @@
#include <QtGlobal>
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
-
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/private/qeglconvenience_p.h>
+#include <QtGui/private/qeglplatformcontext_p.h>
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
#include <QtEglSupport/private/qeglconvenience_p.h>
#include <QtEglSupport/private/qeglplatformcontext_p.h>
#else
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/qeglfsintegration.cpp
^
|
@@ -46,7 +46,14 @@
#include <QtGui/private/qguiapplication_p.h>
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/private/qgenericunixfontdatabase_p.h>
+#include <QtGui/private/qgenericunixeventdispatcher_p.h>
+#include <QtGui/private/qgenericunixthemes_p.h>
+#include <QtGui/private/qeglconvenience_p.h>
+#include <QtGui/private/qeglplatformcontext_p.h>
+#include <QtGui/private/qeglpbuffer_p.h>
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
#include <QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h>
#include <QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h>
#include <QtThemeSupport/private/qgenericunixthemes_p.h>
|
[-]
[+]
|
Changed |
_service:tar_git:qt5-qpa-hwcomposer-plugin-5.6.2.24.tar.bz2/hwcomposer/qeglfswindow.cpp
^
|
@@ -42,7 +42,9 @@
#include "qeglfswindow.h"
#include <qpa/qwindowsysteminterface.h>
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtGui/private/qeglconvenience_p.h>
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
#include <QtEglSupport/private/qeglconvenience_p.h>
#else
#include <QtPlatformSupport/private/qeglconvenience_p.h>
|