From 9bd3d2aa5c7982281bd968e157124358c0f8839e Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Wed, 5 Feb 2020 19:52:50 +0100 Subject: [PATCH] qt5: use main entrypoint in QPA plugin Fixes #3644 --- .../qpa_nitpicker/qnitpickerplatformwindow.h | 13 ++----------- .../src/plugins/platforms/nitpicker/main.cpp | 6 +----- .../platforms/nitpicker/qgenodeclipboard.cpp | 4 ++-- .../platforms/nitpicker/qgenodeclipboard.h | 4 ++-- .../nitpicker/qnitpickerintegration.cpp | 7 ++----- .../nitpicker/qnitpickerintegration.h | 16 ++-------------- .../nitpicker/qnitpickerplatformwindow.cpp | 18 ++++-------------- 7 files changed, 15 insertions(+), 53 deletions(-) diff --git a/repos/libports/include/qt5/qpa_nitpicker/qnitpickerplatformwindow.h b/repos/libports/include/qt5/qpa_nitpicker/qnitpickerplatformwindow.h index 858950960..1d1593ecd 100644 --- a/repos/libports/include/qt5/qpa_nitpicker/qnitpickerplatformwindow.h +++ b/repos/libports/include/qt5/qpa_nitpicker/qnitpickerplatformwindow.h @@ -48,7 +48,6 @@ class QNitpickerPlatformWindow : public QObject, public QPlatformWindow bool _framebuffer_changed; bool _geometry_changed; Framebuffer::Mode _current_mode; - Genode::Entrypoint &_signal_ep; Nitpicker::Session::View_handle _view_handle; Input::Session_client _input_session; Genode::Attached_dataspace _ev_buf; @@ -83,8 +82,8 @@ class QNitpickerPlatformWindow : public QObject, public QPlatformWindow void _key_event(Input::Keycode, Codepoint, Mapped_key::Event); void _mouse_button_event(Input::Keycode, bool press); - Genode::Signal_handler _input_signal_handler; - Genode::Signal_handler _mode_changed_signal_handler; + Genode::Io_signal_handler _input_signal_handler; + Genode::Io_signal_handler _mode_changed_signal_handler; QVector _touch_points { 16 }; QTouchDevice *_touch_device; @@ -97,20 +96,12 @@ class QNitpickerPlatformWindow : public QObject, public QPlatformWindow QString _sanitize_label(QString label); - private Q_SLOTS: - void _handle_input(); void _handle_mode_changed(); - Q_SIGNALS: - - void _input(); - void _mode_changed(); - public: QNitpickerPlatformWindow(Genode::Env &env, QWindow *window, - Genode::Entrypoint &signal_ep, int screen_width, int screen_height); ~QNitpickerPlatformWindow(); diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp index 994d51ce1..d06d27afe 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/main.cpp @@ -40,11 +40,7 @@ QPlatformIntegration *QNitpickerIntegrationPlugin::create(const QString& system, Q_UNUSED(paramList); if (system.toLower() == "nitpicker") { assert(_env != nullptr); - Genode::Entrypoint *signal_ep = - new Genode::Entrypoint(*_env, 2*1024*sizeof(Genode::addr_t), - "QPA signal handler", - Genode::Affinity::Location()); - return new QNitpickerIntegration(*_env, *signal_ep); + return new QNitpickerIntegration(*_env); } return 0; diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.cpp b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.cpp index b06a1001c..f999a6264 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.cpp @@ -27,8 +27,8 @@ QT_BEGIN_NAMESPACE static constexpr bool verbose = false; -QGenodeClipboard::QGenodeClipboard(Genode::Env &env, Genode::Entrypoint &sig_ep) -: _clipboard_signal_handler(sig_ep, *this, &QGenodeClipboard::_handle_clipboard) +QGenodeClipboard::QGenodeClipboard(Genode::Env &env) +: _clipboard_signal_handler(env.ep(), *this, &QGenodeClipboard::_handle_clipboard) { try { diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.h b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.h index f9b3f15a8..e3dc19a4a 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.h +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qgenodeclipboard.h @@ -33,7 +33,7 @@ class QGenodeClipboard : public QPlatformClipboard private: Genode::Attached_rom_dataspace *_clipboard_ds = nullptr; - Genode::Signal_handler _clipboard_signal_handler; + Genode::Io_signal_handler _clipboard_signal_handler; Genode::Reporter *_clipboard_reporter = nullptr; @@ -45,7 +45,7 @@ class QGenodeClipboard : public QPlatformClipboard public: - QGenodeClipboard(Genode::Env &env, Genode::Entrypoint &sig_ep); + QGenodeClipboard(Genode::Env &env); ~QGenodeClipboard(); QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard); void setMimeData(QMimeData *data, QClipboard::Mode mode = QClipboard::Clipboard); diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp index 5cde7b86a..6ab2eeab2 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.cpp @@ -29,10 +29,8 @@ QT_BEGIN_NAMESPACE static const bool verbose = false; -QNitpickerIntegration::QNitpickerIntegration(Genode::Env &env, - Genode::Entrypoint &signal_ep) +QNitpickerIntegration::QNitpickerIntegration(Genode::Env &env) : _env(env), - _signal_ep(signal_ep), _nitpicker_screen(new QNitpickerScreen(env)) { } @@ -52,7 +50,6 @@ QPlatformWindow *QNitpickerIntegration::createPlatformWindow(QWindow *window) co QRect screen_geometry = _nitpicker_screen->geometry(); return new QNitpickerPlatformWindow(_env, window, - _signal_ep, screen_geometry.width(), screen_geometry.height()); } @@ -95,7 +92,7 @@ QPlatformFontDatabase *QNitpickerIntegration::fontDatabase() const #ifndef QT_NO_CLIPBOARD QPlatformClipboard *QNitpickerIntegration::clipboard() const { - static QGenodeClipboard cb(_env, _signal_ep); + static QGenodeClipboard cb(_env); return &cb; } #endif diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h index ce157a21c..615fc1a98 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerintegration.h @@ -30,24 +30,12 @@ class QNitpickerIntegration : public QPlatformIntegration private: Genode::Env &_env; - - Genode::Entrypoint &_signal_ep; - QNitpickerScreen *_nitpicker_screen; - - /* - * A reference to the signal receiver gets passed to newly created - * objects, for example in 'createPlatformWindow()'. Since this is - * a const member function, the signal receiver cannot be a member - * variable of QNitpickerIntegration. - */ - static Genode::Signal_receiver &_signal_receiver(); - QScopedPointer m_inputContext; + QScopedPointer m_inputContext; public: - QNitpickerIntegration(Genode::Env &env, - Genode::Entrypoint &signal_ep); + QNitpickerIntegration(Genode::Env &env); void initialize() Q_DECL_OVERRIDE; bool hasCapability(QPlatformIntegration::Capability cap) const Q_DECL_OVERRIDE; diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp index f13c43f7a..24f14c4a3 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp @@ -493,7 +493,6 @@ QString QNitpickerPlatformWindow::_sanitize_label(QString label) QNitpickerPlatformWindow::QNitpickerPlatformWindow(Genode::Env &env, QWindow *window, - Genode::Entrypoint &signal_ep, int screen_width, int screen_height) : QPlatformWindow(window), _env(env), @@ -503,17 +502,16 @@ QNitpickerPlatformWindow::QNitpickerPlatformWindow(Genode::Env &env, QWindow *wi _framebuffer(0), _framebuffer_changed(false), _geometry_changed(false), - _signal_ep(signal_ep), _view_handle(_create_view()), _input_session(env.rm(), _nitpicker_session.input_session()), _ev_buf(env.rm(), _input_session.dataspace()), _resize_handle(!window->flags().testFlag(Qt::Popup)), _decoration(!window->flags().testFlag(Qt::Popup)), _egl_surface(EGL_NO_SURFACE), - _input_signal_handler(_signal_ep, *this, - &QNitpickerPlatformWindow::_input), - _mode_changed_signal_handler(_signal_ep, *this, - &QNitpickerPlatformWindow::_mode_changed), + _input_signal_handler(_env.ep(), *this, + &QNitpickerPlatformWindow::_handle_input), + _mode_changed_signal_handler(_env.ep(), *this, + &QNitpickerPlatformWindow::_handle_mode_changed), _touch_device(_init_touch_device()) { if (qnpw_verbose) @@ -535,14 +533,6 @@ QNitpickerPlatformWindow::QNitpickerPlatformWindow(Genode::Env &env, QWindow *wi _nitpicker_session.enqueue(_view_handle); _nitpicker_session.execute(); } - - connect(this, SIGNAL(_input()), - this, SLOT(_handle_input()), - Qt::QueuedConnection); - - connect(this, SIGNAL(_mode_changed()), - this, SLOT(_handle_mode_changed()), - Qt::QueuedConnection); } QNitpickerPlatformWindow::~QNitpickerPlatformWindow()