From 18001819e8eb80295558489f71d434171ac8c924 Mon Sep 17 00:00:00 2001 From: Gerry Boland Date: Mon, 23 Feb 2015 22:16:08 +0000 Subject: Remove boost, it is barely used --- src/modules/Unity/Application/application_manager.cpp | 18 +++++++++--------- src/modules/Unity/Application/proc_info.cpp | 6 +++--- src/modules/Unity/Application/proc_info.h | 2 +- src/platforms/mirserver/CMakeLists.txt | 2 -- 4 files changed, 13 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index 0fb5ad9..ac31038 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -748,26 +748,26 @@ void ApplicationManager::authorizeSession(const quint64 pid, bool &authorized) return; } - boost::optional desktopFileName{ info->getParameter("--desktop_file_hint=") }; + QString desktopFileName = info->getParameter("--desktop_file_hint="); - if (!desktopFileName) { + if (desktopFileName.isNull()) { qCritical() << "ApplicationManager REJECTED connection from app with pid" << pid - << "as no desktop_file_hint specified"; + << "as it was not launched by upstart, and no desktop_file_hint is specified"; return; } qCDebug(QTMIR_APPLICATIONS) << "Process supplied desktop_file_hint, loading:" << desktopFileName; // Guess appId from the desktop file hint - QString appId = toShortAppIdIfPossible(desktopFileName.get().remove(QRegExp(".desktop$")).split('/').last()); + QString appId = toShortAppIdIfPossible(desktopFileName.remove(QRegExp(".desktop$")).split('/').last()); // FIXME: right now we support --desktop_file_hint=appId for historical reasons. So let's try that in // case we didn't get an existing .desktop file path DesktopFileReader* desktopData; - if (QFileInfo::exists(desktopFileName.get())) { - desktopData = m_desktopFileReaderFactory->createInstance(appId, QFileInfo(desktopFileName.get())); + if (QFileInfo::exists(desktopFileName)) { + desktopData = m_desktopFileReaderFactory->createInstance(appId, QFileInfo(desktopFileName)); } else { - qCDebug(QTMIR_APPLICATIONS) << "Unable to find file:" << desktopFileName.get() + qCDebug(QTMIR_APPLICATIONS) << "Unable to find file:" << desktopFileName << "so will search standard paths for one named" << appId << ".desktop"; desktopData = m_desktopFileReaderFactory->createInstance(appId, m_taskController->findDesktopFileForAppId(appId)); } @@ -793,9 +793,9 @@ void ApplicationManager::authorizeSession(const quint64 pid, bool &authorized) // if stage supplied in CLI, fetch that Application::Stage stage = Application::MainStage; - boost::optional stageParam = info->getParameter("--stage_hint="); + QString stageParam = info->getParameter("--stage_hint="); - if (stageParam && stageParam.get() == "side_stage") { + if (stageParam == "side_stage") { stage = Application::SideStage; } diff --git a/src/modules/Unity/Application/proc_info.cpp b/src/modules/Unity/Application/proc_info.cpp index e80aa64..1bd0d51 100644 --- a/src/modules/Unity/Application/proc_info.cpp +++ b/src/modules/Unity/Application/proc_info.cpp @@ -46,16 +46,16 @@ bool ProcInfo::CommandLine::contains(char const* prefix) const { return m_command.contains(prefix); } -boost::optional ProcInfo::CommandLine::getParameter(const char* name) const { +QString ProcInfo::CommandLine::getParameter(const char* name) const { QString pattern = QRegularExpression::escape(name) + "(\\S+)"; QRegularExpression regExp(pattern); QRegularExpressionMatch regExpMatch = regExp.match(m_command); if (!regExpMatch.hasMatch()) { - return boost::optional{}; + return QString(); } - return boost::optional{regExpMatch.captured(1)}; + return QString(regExpMatch.captured(1)); } } // namespace qtmir diff --git a/src/modules/Unity/Application/proc_info.h b/src/modules/Unity/Application/proc_info.h index f4c2a4f..a5501ad 100644 --- a/src/modules/Unity/Application/proc_info.h +++ b/src/modules/Unity/Application/proc_info.h @@ -44,7 +44,7 @@ public: bool startsWith(const char* prefix) const; bool contains(const char* prefix) const; - boost::optional getParameter(const char* name) const; + QString getParameter(const char* name) const; QStringList asStringList() const; }; virtual std::unique_ptr commandLine(quint64 pid); diff --git a/src/platforms/mirserver/CMakeLists.txt b/src/platforms/mirserver/CMakeLists.txt index 0815d3d..d420da1 100644 --- a/src/platforms/mirserver/CMakeLists.txt +++ b/src/platforms/mirserver/CMakeLists.txt @@ -86,8 +86,6 @@ target_link_libraries( Qt5::DBus Qt5::Quick Qt5::Sensors - - -lboost_system ) include(UseLttngGenTp) -- cgit v1.2.3 From 918b1c8630ce35fd5a91dffadc881d6c8df939ac Mon Sep 17 00:00:00 2001 From: Gerry Boland Date: Wed, 11 Mar 2015 10:10:49 +0000 Subject: Use SurfaceObserver to watch for surface attribute changes --- src/modules/Unity/Application/mirsurfaceitem.cpp | 4 ++-- src/modules/Unity/Application/mirsurfaceitem.h | 2 +- .../Unity/Application/mirsurfacemanager.cpp | 22 ---------------------- src/modules/Unity/Application/mirsurfacemanager.h | 3 --- src/platforms/mirserver/mirshell.cpp | 12 ------------ src/platforms/mirserver/mirshell.h | 9 --------- src/platforms/mirserver/surfaceobserver.cpp | 14 ++++++++++++-- src/platforms/mirserver/surfaceobserver.h | 6 ++++-- 8 files changed, 19 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/mirsurfaceitem.cpp b/src/modules/Unity/Application/mirsurfaceitem.cpp index 5d9b6a9..fa0f55d 100644 --- a/src/modules/Unity/Application/mirsurfaceitem.cpp +++ b/src/modules/Unity/Application/mirsurfaceitem.cpp @@ -255,6 +255,7 @@ MirSurfaceItem::MirSurfaceItem(std::shared_ptr surface, m_surfaceObserver = observer; if (observer) { connect(observer.get(), &SurfaceObserver::framesPosted, this, &MirSurfaceItem::surfaceDamaged); + connect(observer.get(), &SurfaceObserver::attributeChanged, this, &MirSurfaceItem::onAttributeChanged); observer->setListener(this); } @@ -692,8 +693,7 @@ void MirSurfaceItem::setLive(const bool live) } } -// Called by MirSurfaceItemManager upon a msh::Surface attribute change -void MirSurfaceItem::setAttribute(const MirSurfaceAttrib attribute, const int /*value*/) +void MirSurfaceItem::onAttributeChanged(const MirSurfaceAttrib attribute, const int /*value*/) { switch (attribute) { case mir_surface_attrib_type: diff --git a/src/modules/Unity/Application/mirsurfaceitem.h b/src/modules/Unity/Application/mirsurfaceitem.h index 98007cf..26bcce3 100644 --- a/src/modules/Unity/Application/mirsurfaceitem.h +++ b/src/modules/Unity/Application/mirsurfaceitem.h @@ -144,6 +144,7 @@ private Q_SLOTS: void updateMirSurfaceSize(); void updateMirSurfaceFocus(bool focused); + void onAttributeChanged(const MirSurfaceAttrib, const int); private: bool updateTexture(); @@ -154,7 +155,6 @@ private: void setLive(const bool); // called by MirSurfaceManager - void setAttribute(const MirSurfaceAttrib, const int); void setSurfaceValid(const bool); bool hasTouchInsideUbuntuKeyboard(const QList &touchPoints); diff --git a/src/modules/Unity/Application/mirsurfacemanager.cpp b/src/modules/Unity/Application/mirsurfacemanager.cpp index 5ab108e..183c3a5 100644 --- a/src/modules/Unity/Application/mirsurfacemanager.cpp +++ b/src/modules/Unity/Application/mirsurfacemanager.cpp @@ -51,12 +51,6 @@ void connectToSessionListener(MirSurfaceManager *manager, SessionListener *liste manager, &MirSurfaceManager::onSessionDestroyingSurface); } -void connectToShell(MirSurfaceManager *manager, MirShell *shell) -{ - QObject::connect(shell, &MirShell::surfaceAttributeChanged, - manager, &MirSurfaceManager::onSurfaceAttributeChanged); -} - MirSurfaceManager* MirSurfaceManager::singleton() { if (!the_surface_manager) { @@ -75,7 +69,6 @@ MirSurfaceManager* MirSurfaceManager::singleton() the_surface_manager = new MirSurfaceManager(nativeInterface->m_mirServer, shell, SessionManager::singleton()); connectToSessionListener(the_surface_manager, sessionListener); - connectToShell(the_surface_manager, shell); } return the_surface_manager; } @@ -167,19 +160,4 @@ void MirSurfaceManager::onSessionDestroyingSurface(const mir::scene::Session *se Q_EMIT surfaceDestroyed(item); } -// NB: Surface might be a dangling pointer here, so refrain from dereferencing it. -void MirSurfaceManager::onSurfaceAttributeChanged(const ms::Surface *surface, - const MirSurfaceAttrib attribute, const int value) -{ - qCDebug(QTMIR_SURFACES) << "MirSurfaceManager::onSurfaceAttributeChanged - surface=" << surface - << qPrintable(mirSurfaceAttribAndValueToString(attribute, value)); - - QMutexLocker lock(&m_mutex); - auto it = m_mirSurfaceToItemHash.find(surface); - if (it != m_mirSurfaceToItemHash.end()) { - it.value()->setAttribute(attribute, value); - } -} - - } // namespace qtmir diff --git a/src/modules/Unity/Application/mirsurfacemanager.h b/src/modules/Unity/Application/mirsurfacemanager.h index df1971c..b9e5533 100644 --- a/src/modules/Unity/Application/mirsurfacemanager.h +++ b/src/modules/Unity/Application/mirsurfacemanager.h @@ -73,10 +73,7 @@ public Q_SLOTS: void onSessionCreatedSurface(const mir::scene::Session *, const std::shared_ptr &, std::shared_ptr const&); void onSessionDestroyingSurface(const mir::scene::Session *, const std::shared_ptr &); - void onSurfaceAttributeChanged(const mir::scene::Surface *, MirSurfaceAttrib, int); - protected: - QHash m_mirSurfaceToItemHash; QMutex m_mutex; diff --git a/src/platforms/mirserver/mirshell.cpp b/src/platforms/mirserver/mirshell.cpp index fac7ec3..bb13b7b 100644 --- a/src/platforms/mirserver/mirshell.cpp +++ b/src/platforms/mirserver/mirshell.cpp @@ -61,15 +61,3 @@ mir::frontend::SurfaceId MirShell::create_surface(const std::shared_ptr &session, - const std::shared_ptr &surface, - MirSurfaceAttrib attrib, - int value) -{ - auto const result = AbstractShell::set_surface_attribute(session, surface, attrib, value); - Q_EMIT surfaceAttributeChanged(surface.get(), attrib, result); - - return result; -} diff --git a/src/platforms/mirserver/mirshell.h b/src/platforms/mirserver/mirshell.h index 386a491..85c243e 100644 --- a/src/platforms/mirserver/mirshell.h +++ b/src/platforms/mirserver/mirshell.h @@ -40,15 +40,6 @@ public: virtual mir::frontend::SurfaceId create_surface(const std::shared_ptr& session, const mir::scene::SurfaceCreationParameters ¶ms); - int set_surface_attribute( - const std::shared_ptr &session, - const std::shared_ptr &surface, - MirSurfaceAttrib attrib, - int value) override; - -Q_SIGNALS: - void surfaceAttributeChanged(mir::scene::Surface const*, const MirSurfaceAttrib, const int); - private: std::shared_ptr const m_displayLayout; }; diff --git a/src/platforms/mirserver/surfaceobserver.cpp b/src/platforms/mirserver/surfaceobserver.cpp index db7a912..97f2733 100644 --- a/src/platforms/mirserver/surfaceobserver.cpp +++ b/src/platforms/mirserver/surfaceobserver.cpp @@ -24,16 +24,26 @@ SurfaceObserver::SurfaceObserver() { } -void SurfaceObserver::setListener(QObject *listener) { +void SurfaceObserver::setListener(QObject *listener) +{ m_listener = listener; if (m_framesPosted) { Q_EMIT framesPosted(); } } -void SurfaceObserver::frame_posted(int /*frames_available*/) { +void SurfaceObserver::frame_posted(int /*frames_available*/) +{ m_framesPosted = true; if (m_listener) { Q_EMIT framesPosted(); } } + +void SurfaceObserver::attrib_changed(MirSurfaceAttrib attribute, int value) +{ + if (m_listener) { + Q_EMIT attributeChanged(attribute, value); + } +} + diff --git a/src/platforms/mirserver/surfaceobserver.h b/src/platforms/mirserver/surfaceobserver.h index db90765..ca63025 100644 --- a/src/platforms/mirserver/surfaceobserver.h +++ b/src/platforms/mirserver/surfaceobserver.h @@ -20,7 +20,8 @@ #include #include -class SurfaceObserver : public QObject, public mir::scene::SurfaceObserver { +class SurfaceObserver : public QObject, public mir::scene::SurfaceObserver +{ Q_OBJECT public: @@ -28,7 +29,7 @@ public: void setListener(QObject *listener); - void attrib_changed(MirSurfaceAttrib, int) override {} + void attrib_changed(MirSurfaceAttrib, int) override; void resized_to(mir::geometry::Size const&) override {} void moved_to(mir::geometry::Point const&) override {} void hidden_set_to(bool) override {} @@ -44,6 +45,7 @@ public: void client_surface_close_requested() override {} Q_SIGNALS: + void attributeChanged(const MirSurfaceAttrib attribute, const int value); void framesPosted(); private: -- cgit v1.2.3 From bc5c34115d672e2d47147dd167965646a1ec6c5a Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 13 Mar 2015 17:06:40 +0100 Subject: read exception list from gsettings instead a hardcoded list --- src/modules/Unity/Application/CMakeLists.txt | 4 ++++ src/modules/Unity/Application/application_manager.cpp | 15 ++++++++++++++- src/modules/Unity/Application/application_manager.h | 3 +++ .../Unity/Application/com.canonical.qtmir.gschema.xml | 10 ++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/modules/Unity/Application/com.canonical.qtmir.gschema.xml (limited to 'src') diff --git a/src/modules/Unity/Application/CMakeLists.txt b/src/modules/Unity/Application/CMakeLists.txt index 62dc79d..8a3b703 100644 --- a/src/modules/Unity/Application/CMakeLists.txt +++ b/src/modules/Unity/Application/CMakeLists.txt @@ -9,6 +9,7 @@ include_directories( ${UBUNTU_APP_LAUNCH_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/src/platforms/mirserver ${CMAKE_SOURCE_DIR}/src/common + ${GSETTINGS_QT_INCLUDE_DIRS} ${LTTNG_INCLUDE_DIRS} ${Qt5Gui_PRIVATE_INCLUDE_DIRS} @@ -64,6 +65,7 @@ target_link_libraries( ${PROCESS_CPP_LDFLAGS} ${UBUNTU_APP_LAUNCH_LDFLAGS} ${LTTNG_LDFLAGS} + ${GSETTINGS_QT_LDFLAGS} ${GL_LIBRARIES} @@ -82,3 +84,5 @@ add_lttng_gen_tp(NAME tracepoints) # install add_qml_plugin(Unity.Application 0.1 Unity/Application TARGETS unityapplicationplugin) +install(FILES com.canonical.qtmir.gschema.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas) + diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index 0fb5ad9..7e4e430 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -47,6 +47,9 @@ #include #include +// Ubuntu +#include + // std #include @@ -205,7 +208,6 @@ ApplicationManager::ApplicationManager( , m_focusedApplication(nullptr) , m_mainStageApplication(nullptr) , m_sideStageApplication(nullptr) - , m_lifecycleExceptions(QStringList() << "com.ubuntu.music") , m_dbusWindowStack(new DBusWindowStack(this)) , m_taskController(taskController) , m_desktopFileReaderFactory(desktopFileReaderFactory) @@ -219,6 +221,10 @@ ApplicationManager::ApplicationManager( m_roleNames.insert(RoleSession, "session"); m_roleNames.insert(RoleFullscreen, "fullscreen"); + + m_settings = new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/", this); + m_lifecycleExceptions = m_settings->get("items").toStringList(); + connect(m_settings, &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); } ApplicationManager::~ApplicationManager() @@ -709,6 +715,13 @@ void ApplicationManager::onAppDataChanged(const int role) } } +void ApplicationManager::onSettingsChanged(const QString &key) +{ + if (key == "items") { + m_lifecycleExceptions = m_settings->get("items").toStringList(); + } +} + void ApplicationManager::authorizeSession(const quint64 pid, bool &authorized) { tracepoint(qtmir, authorizeSession); diff --git a/src/modules/Unity/Application/application_manager.h b/src/modules/Unity/Application/application_manager.h index c7d87a2..ba1d9b5 100644 --- a/src/modules/Unity/Application/application_manager.h +++ b/src/modules/Unity/Application/application_manager.h @@ -40,6 +40,7 @@ namespace mir { } class MirServer; +class QGSettings; namespace qtmir { @@ -136,6 +137,7 @@ Q_SIGNALS: private Q_SLOTS: void onAppDataChanged(const int role); + void onSettingsChanged(const QString &key); private: void setFocused(Application *application); @@ -167,6 +169,7 @@ private: QList m_hiddenPIDs; bool m_suspended; bool m_forceDashActive; + QGSettings *m_settings; friend class Application; friend class DBusWindowStack; diff --git a/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml b/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml new file mode 100644 index 0000000..bc81859 --- /dev/null +++ b/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml @@ -0,0 +1,10 @@ + + + + [ + 'com.ubuntu.music' + ] + List of apps that should be excluded from the app lifecycle + + + -- cgit v1.2.3 From 1552c179c2320cf6d590b643c6e609e837579ff8 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 13 Mar 2015 17:12:39 +0100 Subject: rename gsettings key --- src/modules/Unity/Application/application_manager.cpp | 6 +++--- src/modules/Unity/Application/com.canonical.qtmir.gschema.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index 7e4e430..eb103d8 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -223,7 +223,7 @@ ApplicationManager::ApplicationManager( m_roleNames.insert(RoleFullscreen, "fullscreen"); m_settings = new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/", this); - m_lifecycleExceptions = m_settings->get("items").toStringList(); + m_lifecycleExceptions = m_settings->get("lifecycle-exempt-appids").toStringList(); connect(m_settings, &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); } @@ -717,8 +717,8 @@ void ApplicationManager::onAppDataChanged(const int role) void ApplicationManager::onSettingsChanged(const QString &key) { - if (key == "items") { - m_lifecycleExceptions = m_settings->get("items").toStringList(); + if (key == "lifecycle-exempt-appids") { + m_lifecycleExceptions = m_settings->get("lifecycle-exempt-appids").toStringList(); } } diff --git a/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml b/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml index bc81859..4bd3ed5 100644 --- a/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml +++ b/src/modules/Unity/Application/com.canonical.qtmir.gschema.xml @@ -1,6 +1,6 @@ - + [ 'com.ubuntu.music' ] -- cgit v1.2.3 From 970037d7088366936d524039bf1ec2bc51e66c94 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 13 Mar 2015 19:25:22 +0100 Subject: camellCase it because the emitted key in the signal is converted to camelCase --- src/modules/Unity/Application/application_manager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index eb103d8..ee25540 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -223,7 +223,7 @@ ApplicationManager::ApplicationManager( m_roleNames.insert(RoleFullscreen, "fullscreen"); m_settings = new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/", this); - m_lifecycleExceptions = m_settings->get("lifecycle-exempt-appids").toStringList(); + m_lifecycleExceptions = m_settings->get("lifecycleExemptAppids").toStringList(); connect(m_settings, &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); } @@ -717,8 +717,8 @@ void ApplicationManager::onAppDataChanged(const int role) void ApplicationManager::onSettingsChanged(const QString &key) { - if (key == "lifecycle-exempt-appids") { - m_lifecycleExceptions = m_settings->get("lifecycle-exempt-appids").toStringList(); + if (key == "lifecycleExemptAppids") { + m_lifecycleExceptions = m_settings->get("lifecycleExemptAppids").toStringList(); } } -- cgit v1.2.3 From 5cd1a8be960f2649dd41ad0bdf0e8de9cd2865f0 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 16 Mar 2015 18:08:09 +0100 Subject: fix tests --- src/modules/Unity/Application/application_manager.cpp | 13 +++++++++---- src/modules/Unity/Application/application_manager.h | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index ee25540..73fc929 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -155,6 +155,7 @@ ApplicationManager* ApplicationManager::Factory::Factory::create() QSharedPointer fileReaderFactory(new DesktopFileReader::Factory()); QSharedPointer procInfo(new ProcInfo()); QSharedPointer sharedWakelock(new SharedWakelock); + QSharedPointer settings(new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/")); // FIXME: We should use a QSharedPointer to wrap this ApplicationManager object, which requires us // to use the data() method to pass the raw pointer to the QML engine. However the QML engine appears @@ -166,7 +167,8 @@ ApplicationManager* ApplicationManager::Factory::Factory::create() taskController, sharedWakelock, fileReaderFactory, - procInfo + procInfo, + settings ); connectToSessionListener(appManager, sessionListener); @@ -202,6 +204,7 @@ ApplicationManager::ApplicationManager( const QSharedPointer& sharedWakelock, const QSharedPointer& desktopFileReaderFactory, const QSharedPointer& procInfo, + const QSharedPointer& settings, QObject *parent) : ApplicationManagerInterface(parent) , m_mirServer(mirServer) @@ -213,6 +216,7 @@ ApplicationManager::ApplicationManager( , m_desktopFileReaderFactory(desktopFileReaderFactory) , m_procInfo(procInfo) , m_sharedWakelock(sharedWakelock) + , m_settings(settings) , m_suspended(false) , m_forceDashActive(false) { @@ -222,9 +226,10 @@ ApplicationManager::ApplicationManager( m_roleNames.insert(RoleSession, "session"); m_roleNames.insert(RoleFullscreen, "fullscreen"); - m_settings = new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/", this); - m_lifecycleExceptions = m_settings->get("lifecycleExemptAppids").toStringList(); - connect(m_settings, &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); + if (settings.data()) { + m_lifecycleExceptions = m_settings->get("lifecycleExemptAppids").toStringList(); + connect(m_settings.data(), &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); + } } ApplicationManager::~ApplicationManager() diff --git a/src/modules/Unity/Application/application_manager.h b/src/modules/Unity/Application/application_manager.h index ba1d9b5..cde61f9 100644 --- a/src/modules/Unity/Application/application_manager.h +++ b/src/modules/Unity/Application/application_manager.h @@ -87,6 +87,7 @@ public: const QSharedPointer &sharedWakelock, const QSharedPointer &desktopFileReaderFactory, const QSharedPointer &processInfo, + const QSharedPointer &settings, QObject *parent = 0); virtual ~ApplicationManager(); @@ -165,11 +166,11 @@ private: QSharedPointer m_desktopFileReaderFactory; QSharedPointer m_procInfo; QSharedPointer m_sharedWakelock; + QSharedPointer m_settings; static ApplicationManager* the_application_manager; QList m_hiddenPIDs; bool m_suspended; bool m_forceDashActive; - QGSettings *m_settings; friend class Application; friend class DBusWindowStack; -- cgit v1.2.3 From 249280b9a54d4eaea8a65686895be431d800ee22 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 25 Mar 2015 00:38:33 +0100 Subject: properly mock settings and add a test for it --- src/modules/Unity/Application/CMakeLists.txt | 2 + .../Unity/Application/application_manager.cpp | 10 ++--- .../Unity/Application/application_manager.h | 6 +-- src/modules/Unity/Application/settings.cpp | 39 +++++++++++++++++++ src/modules/Unity/Application/settings.h | 45 ++++++++++++++++++++++ src/modules/Unity/Application/settings_interface.h | 40 +++++++++++++++++++ 6 files changed, 133 insertions(+), 9 deletions(-) create mode 100644 src/modules/Unity/Application/settings.cpp create mode 100644 src/modules/Unity/Application/settings.h create mode 100644 src/modules/Unity/Application/settings_interface.h (limited to 'src') diff --git a/src/modules/Unity/Application/CMakeLists.txt b/src/modules/Unity/Application/CMakeLists.txt index 8a3b703..ade443c 100644 --- a/src/modules/Unity/Application/CMakeLists.txt +++ b/src/modules/Unity/Application/CMakeLists.txt @@ -42,12 +42,14 @@ set(QMLMIRPLUGIN_SRC sharedwakelock.cpp upstart/applicationcontroller.cpp tracepoints.c + settings.cpp # We need to run moc on these headers /usr/include/unity/shell/application/ApplicationInfoInterface.h /usr/include/unity/shell/application/ApplicationManagerInterface.h # Feed the automoc monster session_interface.h applicationcontroller.h + settings_interface.h ) add_library(unityapplicationplugin SHARED diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index 73fc929..6299af8 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -25,6 +25,7 @@ #include "taskcontroller.h" #include "upstart/applicationcontroller.h" #include "tracepoints.h" // generated from tracepoints.tp +#include "settings.h" // mirserver #include "mirserver.h" @@ -47,9 +48,6 @@ #include #include -// Ubuntu -#include - // std #include @@ -155,7 +153,7 @@ ApplicationManager* ApplicationManager::Factory::Factory::create() QSharedPointer fileReaderFactory(new DesktopFileReader::Factory()); QSharedPointer procInfo(new ProcInfo()); QSharedPointer sharedWakelock(new SharedWakelock); - QSharedPointer settings(new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/")); + QSharedPointer settings(new Settings()); // FIXME: We should use a QSharedPointer to wrap this ApplicationManager object, which requires us // to use the data() method to pass the raw pointer to the QML engine. However the QML engine appears @@ -204,7 +202,7 @@ ApplicationManager::ApplicationManager( const QSharedPointer& sharedWakelock, const QSharedPointer& desktopFileReaderFactory, const QSharedPointer& procInfo, - const QSharedPointer& settings, + const QSharedPointer& settings, QObject *parent) : ApplicationManagerInterface(parent) , m_mirServer(mirServer) @@ -228,7 +226,7 @@ ApplicationManager::ApplicationManager( if (settings.data()) { m_lifecycleExceptions = m_settings->get("lifecycleExemptAppids").toStringList(); - connect(m_settings.data(), &QGSettings::changed, this, &ApplicationManager::onSettingsChanged); + connect(m_settings.data(), &Settings::changed, this, &ApplicationManager::onSettingsChanged); } } diff --git a/src/modules/Unity/Application/application_manager.h b/src/modules/Unity/Application/application_manager.h index cde61f9..77ee097 100644 --- a/src/modules/Unity/Application/application_manager.h +++ b/src/modules/Unity/Application/application_manager.h @@ -40,7 +40,6 @@ namespace mir { } class MirServer; -class QGSettings; namespace qtmir { @@ -49,6 +48,7 @@ class MirSurfaceManager; class ProcInfo; class SharedWakelock; class TaskController; +class SettingsInterface; class ApplicationManager : public unity::shell::application::ApplicationManagerInterface { @@ -87,7 +87,7 @@ public: const QSharedPointer &sharedWakelock, const QSharedPointer &desktopFileReaderFactory, const QSharedPointer &processInfo, - const QSharedPointer &settings, + const QSharedPointer &settings, QObject *parent = 0); virtual ~ApplicationManager(); @@ -166,7 +166,7 @@ private: QSharedPointer m_desktopFileReaderFactory; QSharedPointer m_procInfo; QSharedPointer m_sharedWakelock; - QSharedPointer m_settings; + QSharedPointer m_settings; static ApplicationManager* the_application_manager; QList m_hiddenPIDs; bool m_suspended; diff --git a/src/modules/Unity/Application/settings.cpp b/src/modules/Unity/Application/settings.cpp new file mode 100644 index 0000000..e7ffe01 --- /dev/null +++ b/src/modules/Unity/Application/settings.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2015 Canonical, Ltd. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License version 3, as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, + * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +// Ubuntu +#include +#include + +// local +#include "settings.h" + +namespace qtmir +{ + +Settings::Settings(QObject *parent) + :SettingsInterface(parent) + ,m_settings(new QGSettings("com.canonical.qtmir", "/com/canonical/qtmir/")) +{ + connect(m_settings, &QGSettings::changed, this, &Settings::changed); +} + +QVariant Settings::get(const QString &key) const +{ + return m_settings->get(key); +} + +} // namespace qtmir diff --git a/src/modules/Unity/Application/settings.h b/src/modules/Unity/Application/settings.h new file mode 100644 index 0000000..992b76a --- /dev/null +++ b/src/modules/Unity/Application/settings.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 Canonical, Ltd. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License version 3, as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, + * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +#ifndef SETTINGS_H +#define SETTINGS_H + +//Qt +#include + +// local +#include "settings_interface.h" + +class QGSettings; + +namespace qtmir +{ + +class Settings: public SettingsInterface +{ + Q_OBJECT +public: + explicit Settings(QObject *parent = 0); + + QVariant get(const QString &key) const override; + +private: + QGSettings *m_settings; +}; + +} + +#endif // SETTINGS_H diff --git a/src/modules/Unity/Application/settings_interface.h b/src/modules/Unity/Application/settings_interface.h new file mode 100644 index 0000000..1170591 --- /dev/null +++ b/src/modules/Unity/Application/settings_interface.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2015 Canonical, Ltd. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License version 3, as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, + * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +#ifndef SETTINGS_INTERFACE_H +#define SETTINGS_INTERFACE_H + +//Qt +#include + +namespace qtmir +{ + +class SettingsInterface: public QObject +{ + Q_OBJECT +public: + explicit SettingsInterface(QObject *parent = 0): QObject(parent) {} + + virtual QVariant get(const QString &key) const = 0; + +Q_SIGNALS: + void changed(const QString &key); +}; + +} + +#endif // SETTINGS_INTERFACE_H -- cgit v1.2.3 From d4b6d702285b9651f527c1ec9e6b70b21a849224 Mon Sep 17 00:00:00 2001 From: Daniel d'Andrada Date: Wed, 1 Apr 2015 12:02:36 -0300 Subject: Ensure there's only one press or release per touch event --- src/common/debughelpers.cpp | 48 ++++++++++++++++++ src/common/debughelpers.h | 6 ++- src/platforms/mirserver/qteventfeeder.cpp | 84 +++++++++++++++++++++++-------- src/platforms/mirserver/qteventfeeder.h | 5 +- 4 files changed, 120 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/common/debughelpers.cpp b/src/common/debughelpers.cpp index dcf557c..5ddd651 100644 --- a/src/common/debughelpers.cpp +++ b/src/common/debughelpers.cpp @@ -207,3 +207,51 @@ const char *applicationStateToStr(int state) return "???"; } } + +#include +QString mirTouchEventToString(MirTouchInputEvent const* event) +{ + const int pointerCount = mir_touch_input_event_get_touch_count(event); + + QString string("MirTouchInputEvent("); + + for (int i = 0; i < pointerCount; ++i) { + + if (i > 0) { + string.append(","); + } + + MirTouchInputEventTouchAction touchAction = mir_touch_input_event_get_touch_action(event, i); + + QString touchStr = QString("(id=%1,action=%2,x=%3,y=%4)") + .arg(mir_touch_input_event_get_touch_id(event, i)) + .arg(mirTouchActionToString(touchAction)) + .arg(mir_touch_input_event_get_touch_axis_value(event, i, mir_touch_input_axis_x)) + .arg(mir_touch_input_event_get_touch_axis_value(event, i, mir_touch_input_axis_y)); + + string.append(touchStr); + } + + string.append(")"); + + return string; +} + +const char *mirTouchActionToString(MirTouchInputEventTouchAction touchAction) +{ + switch (touchAction) + { + case mir_touch_input_event_action_up: + return "up"; + break; + case mir_touch_input_event_action_down: + return "down"; + break; + case mir_touch_input_event_action_change: + return "change"; + break; + default: + return "???"; + break; + } +} diff --git a/src/common/debughelpers.h b/src/common/debughelpers.h index 2672246..484decf 100644 --- a/src/common/debughelpers.h +++ b/src/common/debughelpers.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2014 Canonical, Ltd. + * Copyright (C) 2013-2015 Canonical, Ltd. * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License version 3, as published by @@ -20,6 +20,7 @@ #include #include +#include class QTouchEvent; @@ -35,4 +36,7 @@ const char *mirMotionActionToStr(int value); const char *applicationStateToStr(int state); +QString mirTouchEventToString(MirTouchInputEvent const* event); +const char *mirTouchActionToString(MirTouchInputEventTouchAction touchAction); + #endif // UBUNTUGESTURES_DEBUG_HELPER_H diff --git a/src/platforms/mirserver/qteventfeeder.cpp b/src/platforms/mirserver/qteventfeeder.cpp index 948164f..732cd90 100644 --- a/src/platforms/mirserver/qteventfeeder.cpp +++ b/src/platforms/mirserver/qteventfeeder.cpp @@ -30,7 +30,9 @@ #include -Q_LOGGING_CATEGORY(QTMIR_MIR_INPUT, "qtmir.mir.input") +#include "../../common/debughelpers.h" + +Q_LOGGING_CATEGORY(QTMIR_MIR_INPUT, "qtmir.mir.input", QtWarningMsg) // XKB Keysyms which do not map directly to Qt types (i.e. Unicode points) static const uint32_t KeyTable[] = { @@ -355,6 +357,7 @@ void QtEventFeeder::dispatchTouch(MirInputEvent const* event) return; auto tev = mir_input_event_get_touch_input_event(event); + qCDebug(QTMIR_MIR_INPUT) << "Received" << qPrintable(mirTouchEventToString(tev)); // FIXME(loicm) Max pressure is device specific. That one is for the Samsung Galaxy Nexus. That // needs to be fixed as soon as the compat input lib adds query support. @@ -398,9 +401,10 @@ void QtEventFeeder::dispatchTouch(MirInputEvent const* event) // Qt needs a happy, sane stream of touch events. So let's make sure we're not forwarding // any insanity. - validateTouches(touchPoints); + validateTouches(mir_input_event_get_event_time(event) / 1000000, touchPoints); // Touch event propagation. + qCDebug(QTMIR_MIR_INPUT) << "Sending to Qt" << qPrintable(touchesToString(touchPoints)); mQtWindowSystem->handleTouchEvent( //scales down the nsec_t (int64) to fit a ulong, precision lost but time difference suitable mir_input_event_get_event_time(event) / 1000000, @@ -429,7 +433,8 @@ void QtEventFeeder::device_reset(int32_t device_id, std::chrono::nanoseconds whe Q_UNUSED(when); } -void QtEventFeeder::validateTouches(QList &touchPoints) +void QtEventFeeder::validateTouches(ulong timestamp, + QList &touchPoints) { QSet updatedTouches; @@ -446,23 +451,47 @@ void QtEventFeeder::validateTouches(QList &t } } - // Release all unmentioned touches. - { - QHash::iterator it = mActiveTouches.begin(); - while (it != mActiveTouches.end()) { - if (!updatedTouches.contains(it.key())) { - qCWarning(QTMIR_MIR_INPUT) - << "There's a touch (id =" << it.key() << ") missing. Releasing it."; - it.value().state = Qt::TouchPointReleased; - touchPoints.append(it.value()); - it = mActiveTouches.erase(it); - } else { - ++it; - } + // Release all unmentioned touches, one by one. + QHash::iterator it = mActiveTouches.begin(); + while (it != mActiveTouches.end()) { + if (!updatedTouches.contains(it.key())) { + qCWarning(QTMIR_MIR_INPUT) + << "There's a touch (id =" << it.key() << ") missing. Releasing it."; + sendActiveTouchRelease(timestamp, it.key()); + it = mActiveTouches.erase(it); + } else { + ++it; + } + } + + // update mActiveTouches + for (int i = 0; i < touchPoints.count(); ++i) { + auto &touchPoint = touchPoints.at(i); + if (touchPoint.state == Qt::TouchPointReleased) { + mActiveTouches.remove(touchPoint.id); + } else { + mActiveTouches[touchPoint.id] = touchPoint; } } } +void QtEventFeeder::sendActiveTouchRelease(ulong timestamp, int id) +{ + QList touchPoints = mActiveTouches.values(); + + for (int i = 0; i < touchPoints.count(); ++i) { + QWindowSystemInterface::TouchPoint &touchPoint = touchPoints[i]; + if (touchPoint.id == id) { + touchPoint.state = Qt::TouchPointReleased; + } else { + touchPoint.state = Qt::TouchPointStationary; + } + } + + qCDebug(QTMIR_MIR_INPUT) << "Sending to Qt" << qPrintable(touchesToString(touchPoints)); + mQtWindowSystem->handleTouchEvent(timestamp, mTouchDevice, touchPoints); +} + bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint) { bool ok = true; @@ -475,7 +504,6 @@ bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint << "). Making it move instead."; touchPoint.state = Qt::TouchPointMoved; } - mActiveTouches[touchPoint.id] = touchPoint; break; case Qt::TouchPointMoved: if (!mActiveTouches.contains(touchPoint.id)) { @@ -484,7 +512,6 @@ bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint << "). Making it press instead."; touchPoint.state = Qt::TouchPointPressed; } - mActiveTouches[touchPoint.id] = touchPoint; break; case Qt::TouchPointStationary: if (!mActiveTouches.contains(touchPoint.id)) { @@ -493,7 +520,6 @@ bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint << "). Making it press instead."; touchPoint.state = Qt::TouchPointPressed; } - mActiveTouches[touchPoint.id] = touchPoint; break; case Qt::TouchPointReleased: if (!mActiveTouches.contains(touchPoint.id)) { @@ -501,8 +527,6 @@ bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint << "Would release a touch that wasn't pressed before (id =" << touchPoint.id << "). Ignoring it."; ok = false; - } else { - mActiveTouches.remove(touchPoint.id); } break; default: @@ -511,3 +535,21 @@ bool QtEventFeeder::validateTouch(QWindowSystemInterface::TouchPoint &touchPoint return ok; } + +QString QtEventFeeder::touchesToString(const QList &points) +{ + QString result; + for (int i = 0; i < points.count(); ++i) { + if (i > 0) { + result.append(","); + } + const struct QWindowSystemInterface::TouchPoint &point = points.at(i); + result.append(QString("(id=%1,state=%2,normalPosition=(%3,%4))") + .arg(point.id) + .arg(touchPointStateToString(point.state)) + .arg(point.normalPosition.x()) + .arg(point.normalPosition.y()) + ); + } + return result; +} diff --git a/src/platforms/mirserver/qteventfeeder.h b/src/platforms/mirserver/qteventfeeder.h index a57ea62..48113bf 100644 --- a/src/platforms/mirserver/qteventfeeder.h +++ b/src/platforms/mirserver/qteventfeeder.h @@ -71,8 +71,11 @@ private: void dispatchKey(MirInputEvent const* event); void dispatchTouch(MirInputEvent const* event); void dispatchPointer(MirInputEvent const* event); - void validateTouches(QList &touchPoints); + void validateTouches(ulong timestamp, QList &touchPoints); bool validateTouch(QWindowSystemInterface::TouchPoint &touchPoint); + void sendActiveTouchRelease(ulong timestamp, int id); + + QString touchesToString(const QList &points); QTouchDevice *mTouchDevice; QtWindowSystemInterface *mQtWindowSystem; -- cgit v1.2.3 From 248e6089c4ae2d8adc743ebf138719f388c9502a Mon Sep 17 00:00:00 2001 From: Daniel d'Andrada Date: Wed, 1 Apr 2015 12:44:07 -0300 Subject: Remove leftover --- src/common/debughelpers.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/common/debughelpers.cpp b/src/common/debughelpers.cpp index 5ddd651..553eb4f 100644 --- a/src/common/debughelpers.cpp +++ b/src/common/debughelpers.cpp @@ -208,7 +208,6 @@ const char *applicationStateToStr(int state) } } -#include QString mirTouchEventToString(MirTouchInputEvent const* event) { const int pointerCount = mir_touch_input_event_get_touch_count(event); -- cgit v1.2.3 From 5a945868531922f7aa8f58e1a25af1f550ce414d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sawicz?= Date: Fri, 10 Apr 2015 16:46:03 +0200 Subject: Require an application API version, fix the provided version and use include dir from the .pc file --- src/modules/Unity/Application/CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/CMakeLists.txt b/src/modules/Unity/Application/CMakeLists.txt index 62dc79d..c77ab84 100644 --- a/src/modules/Unity/Application/CMakeLists.txt +++ b/src/modules/Unity/Application/CMakeLists.txt @@ -1,4 +1,7 @@ +pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=5) + include_directories( + ${APPLICATION_API_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIO_UNIX_INCLUDE_DIRS} @@ -42,8 +45,8 @@ set(QMLMIRPLUGIN_SRC upstart/applicationcontroller.cpp tracepoints.c # We need to run moc on these headers - /usr/include/unity/shell/application/ApplicationInfoInterface.h - /usr/include/unity/shell/application/ApplicationManagerInterface.h + ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h + ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h # Feed the automoc monster session_interface.h applicationcontroller.h -- cgit v1.2.3 From 04401b17bd0b0ce2a5360f362bf33f9cacdfd0d0 Mon Sep 17 00:00:00 2001 From: Daniel d'Andrada Date: Thu, 16 Apr 2015 10:38:14 -0300 Subject: add src/common to platform/mirserver include dirs --- src/platforms/mirserver/CMakeLists.txt | 8 +++++--- src/platforms/mirserver/qteventfeeder.cpp | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/platforms/mirserver/CMakeLists.txt b/src/platforms/mirserver/CMakeLists.txt index 0815d3d..1ea42d1 100644 --- a/src/platforms/mirserver/CMakeLists.txt +++ b/src/platforms/mirserver/CMakeLists.txt @@ -18,9 +18,11 @@ foreach(item ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) endforeach(item ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) include_directories( + ${CMAKE_SOURCE_DIR}/src/common + ${MIRCOMMON_INCLUDE_DIRS} ${MIRSERVER_INCLUDE_DIRS} - + ${URL_DISPATCHER_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS} ${EGL_INCLUDE_DIRS} @@ -37,7 +39,7 @@ string (REPLACE " -pedantic " " " CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) add_definitions(-DBYTE_ORDER=__BYTE_ORDER) set(MIRSERVER_QPA_PLUGIN_SRC - ../../common/debughelpers.cpp + ${CMAKE_SOURCE_DIR}/src/common/debughelpers.cpp mirshell.cpp qteventfeeder.cpp plugin.cpp @@ -74,7 +76,7 @@ target_link_libraries( ${EGL_LDFLAGS} ${GL_LIBRARIES} ${LTTNG_LIBRARIES} - + ${QT5PLATFORM_SUPPORT_LDFLAGS} # TODO Qt5Platform support LDFLAGS dont provide actual required ldflags... # I found these were needed...perhaps there is some way to query qmake/qconfig? diff --git a/src/platforms/mirserver/qteventfeeder.cpp b/src/platforms/mirserver/qteventfeeder.cpp index 732cd90..385b915 100644 --- a/src/platforms/mirserver/qteventfeeder.cpp +++ b/src/platforms/mirserver/qteventfeeder.cpp @@ -30,7 +30,8 @@ #include -#include "../../common/debughelpers.h" +// common dir +#include Q_LOGGING_CATEGORY(QTMIR_MIR_INPUT, "qtmir.mir.input", QtWarningMsg) -- cgit v1.2.3 From 7578968965f68491b20c7fbce88785b9b2d92468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sawicz?= Date: Thu, 16 Apr 2015 19:23:40 +0200 Subject: Move pkg_check_modules to root CMakeLists.txt. --- src/modules/Unity/Application/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/CMakeLists.txt b/src/modules/Unity/Application/CMakeLists.txt index c77ab84..3668db8 100644 --- a/src/modules/Unity/Application/CMakeLists.txt +++ b/src/modules/Unity/Application/CMakeLists.txt @@ -1,5 +1,3 @@ -pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=5) - include_directories( ${APPLICATION_API_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} -- cgit v1.2.3 From 80cbfd62edc222ed5c94cb7ea2e17dc6994d0439 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Tue, 21 Apr 2015 12:26:53 +0200 Subject: Fix debug line --- src/modules/Unity/Application/application_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp index 17643c1..b13e1d3 100644 --- a/src/modules/Unity/Application/application_manager.cpp +++ b/src/modules/Unity/Application/application_manager.cpp @@ -706,7 +706,7 @@ void ApplicationManager::onAppDataChanged(const int role) QModelIndex appIndex = findIndex(application); Q_EMIT dataChanged(appIndex, appIndex, QVector() << role); - qCDebug(QTMIR_APPLICATIONS) << "ApplicationManager::onAppDataChanged: Received " << m_roleNames[role] << " update", application->appId(); + qCDebug(QTMIR_APPLICATIONS) << "ApplicationManager::onAppDataChanged: Received " << m_roleNames[role] << " update" << application->appId(); } else { qCDebug(QTMIR_APPLICATIONS) << "ApplicationManager::onAppDataChanged: Received " << m_roleNames[role] << " signal but application has disappeard."; } -- cgit v1.2.3 From 2a84ba2321817097f74ad24f0948e2bc16966436 Mon Sep 17 00:00:00 2001 From: Gerry Boland Date: Thu, 23 Apr 2015 11:22:51 +0100 Subject: Remove useless profiling information, fixes build qith Qt5.5 --- .../Unity/Application/mirbuffersgtexture.cpp | 42 ---------------------- 1 file changed, 42 deletions(-) (limited to 'src') diff --git a/src/modules/Unity/Application/mirbuffersgtexture.cpp b/src/modules/Unity/Application/mirbuffersgtexture.cpp index d1db1da..a8d5db9 100644 --- a/src/modules/Unity/Application/mirbuffersgtexture.cpp +++ b/src/modules/Unity/Application/mirbuffersgtexture.cpp @@ -20,18 +20,6 @@ #include #include -// QQuickProfiler uses the pretty syntax for emit, signal & slot -#define emit Q_EMIT -#define signals Q_SIGNALS -#define slots Q_SLOTS -#include -#undef emit -#undef signals -#undef slots -#include -static QElapsedTimer qsg_renderer_timer; -static bool qsg_render_timing = !qgetenv("QSG_RENDER_TIMING").isEmpty(); - namespace mg = mir::geometry; MirBufferSGTexture::MirBufferSGTexture(std::shared_ptr buffer) @@ -88,37 +76,7 @@ bool MirBufferSGTexture::hasAlphaChannel() const void MirBufferSGTexture::bind() { -#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) - bool profileFrames = qsg_render_timing || QQuickProfiler::enabled; -#else - bool profileFrames = qsg_render_timing || QQuickProfiler::profilingSceneGraph(); -#endif - if (profileFrames) - qsg_renderer_timer.start(); - glBindTexture(GL_TEXTURE_2D, m_textureId); updateBindOptions(true/* force */); m_mirBuffer->gl_bind_to_texture(); - - qint64 bindTime = 0; - if (profileFrames) - bindTime = qsg_renderer_timer.nsecsElapsed(); - - if (qsg_render_timing) { - printf(" - mirbuffertexture(%dx%d) bind=%d, total=%d\n", - m_width, m_height, - int(bindTime/1000000), - (int) qsg_renderer_timer.elapsed()); - } - -#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) - Q_QUICK_SG_PROFILE1(QQuickProfiler::SceneGraphTexturePrepare, ( -#else - Q_QUICK_SG_PROFILE(QQuickProfiler::SceneGraphTexturePrepare, ( -#endif - bindTime, // bind (all this does) - 0, // convert (not relevant) - 0, // swizzle (not relevant) - 0, // upload (not relevant) - 0)); // mipmap (not used ever...) } -- cgit v1.2.3 From bbce4a12b17c709ec28028b4de3f365083d3ab21 Mon Sep 17 00:00:00 2001 From: Gerry Boland Date: Mon, 27 Apr 2015 16:59:42 +0100 Subject: If Mir fails to start, exit the process immediately as nothing else can be done Note, QCoreApplication::quit() does nothing as no event loop has been started yet --- src/platforms/mirserver/qmirserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/platforms/mirserver/qmirserver.cpp b/src/platforms/mirserver/qmirserver.cpp index 4af86f7..f28393a 100644 --- a/src/platforms/mirserver/qmirserver.cpp +++ b/src/platforms/mirserver/qmirserver.cpp @@ -69,7 +69,7 @@ QMirServer::QMirServer(const QSharedPointer &server, QObject *parent) if (!m_mirServer->wait_for_mir_startup()) { qCritical() << "ERROR: QMirServer - Mir failed to start"; - QCoreApplication::quit(); + exit(2); } } -- cgit v1.2.3