diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2023-04-13 11:22:58 +0300 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2023-04-20 21:34:19 +0300 |
commit | 74b01c721051068d485a0ab90b1df58c3ff09253 (patch) | |
tree | 8cfb1469f418ac226695d7fcca2f3be20584f584 /homescreen/src/homescreenhandler.cpp | |
parent | 444b2a68a503caaf0d58729d8297ef179215e3c1 (diff) |
homescreenhandler: Add support for starting apps on different outputs
Using the agl-shell protocol. This also needs a bump to version 8 of the
agl-shell protocol to be able to receive events.
Bug-AGL: SPEC-4529
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2989ebc8eb36b8b1272782e5986017e9b557cab7
Diffstat (limited to 'homescreen/src/homescreenhandler.cpp')
-rw-r--r-- | homescreen/src/homescreenhandler.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/homescreen/src/homescreenhandler.cpp b/homescreen/src/homescreenhandler.cpp index e7d6a39..918237a 100644 --- a/homescreen/src/homescreenhandler.cpp +++ b/homescreen/src/homescreenhandler.cpp @@ -11,6 +11,8 @@ #include "homescreenhandler.h" #include "hmi-debug.h" +QScreen *find_screen(const char *output); + // defined by meson build file #include QT_QPA_HEADER @@ -98,8 +100,39 @@ void HomescreenHandler::activateApp(const QString& app_id) if (mp_launcher) { mp_launcher->setCurrent(app_id); } + HMI_DEBUG("HomeScreen", "Activating app_id %s by default output %p\n", + app_id.toStdString().c_str(), mm_output); + + // search for a pending application which might have a different output + auto iter = pending_app_list.begin(); + bool found_pending_app = false; + while (iter != pending_app_list.end()) { + const QString &app_to_search = iter->first; + + if (app_to_search == app_id) { + found_pending_app = true; + break; + } + + iter++; + } + + if (found_pending_app) { + const QString &output_name = iter->second; + QScreen *screen = + ::find_screen(output_name.toStdString().c_str()); + + mm_output = getWlOutput(native, screen); + pending_app_list.erase(iter); + + HMI_DEBUG("HomeScreen", "For application %s found another " + "output to activate %s\n", + app_id.toStdString().c_str(), + output_name.toStdString().c_str()); + } - HMI_DEBUG("HomeScreen", "Activating application %s", app_id.toStdString().c_str()); + HMI_DEBUG("HomeScreen", "Activating application %s", + app_id.toStdString().c_str()); agl_shell_activate_app(agl_shell, app_id.toStdString().c_str(), mm_output); } |