homescreenhandler: Add support for split sandbox/mvlad/react-to-split-events
authorMarius Vlad <marius.vlad@collabora.com>
Fri, 5 Aug 2022 16:56:29 +0000 (19:56 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Sat, 6 Aug 2022 10:30:09 +0000 (13:30 +0300)
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2d32a539e1f3bd5601c652b8fcf8888152258e07

homescreen/src/homescreenhandler.cpp
homescreen/src/homescreenhandler.h
homescreen/src/main.cpp

index c44cbb9..b1a99d8 100644 (file)
@@ -54,6 +54,7 @@ void HomescreenHandler::init(void)
      */
     connect(applaunch_iface, SIGNAL(started(QString)), this, SLOT(appStarted(QString)));
     connect(applaunch_iface, SIGNAL(terminated(QString)), this, SLOT(appTerminated(QString)));
+    connect(applaunch_iface, SIGNAL(splited(QString, uint32_t)), this, SLOT(appSplit(QString, uint32_t)));
 
 }
 
@@ -110,6 +111,20 @@ void HomescreenHandler::addAppToStack(const QString& application_id)
     }
 }
 
+void HomescreenHandler::appSplit(const QString& application_id, uint32_t orientation)
+{
+    struct agl_shell *agl_shell = aglShell->shell.get();
+    QPlatformNativeInterface *native = qApp->platformNativeInterface();
+    struct wl_output *output = getWlOutput(native, qApp->screens().first());
+
+    HMI_DEBUG("HomeScreen", "Split application %s", application_id.toStdString().c_str());
+
+    fprintf(stderr, "homescreen: doing a split for app %s with orientation passed %d\n",
+                   application_id.toStdString().c_str(), orientation);
+    agl_shell_set_app_split(agl_shell, application_id.toStdString().c_str(),
+                            orientation, output);
+}
+
 void HomescreenHandler::appStarted(const QString& application_id)
 {
     struct agl_shell *agl_shell = aglShell->shell.get();
index 503221a..a42acd7 100644 (file)
@@ -57,6 +57,7 @@ signals:
 public slots:
     void appStarted(const QString& application_id);
     void appTerminated(const QString& application_id);
+    void appSplit(const QString& application_id, uint32_t orientation);
 
 private:
     ApplicationLauncher *mp_launcher;
index c69a5be..e7549aa 100644 (file)
@@ -114,7 +114,7 @@ global_add(void *data, struct wl_registry *reg, uint32_t name,
 
        if (strcmp(interface, agl_shell_interface.name) == 0) {
                shell_data->shell = static_cast<struct agl_shell *>(
-                       wl_registry_bind(reg, name, &agl_shell_interface, 2));
+                       wl_registry_bind(reg, name, &agl_shell_interface, 3));
                        agl_shell_add_listener(shell_data->shell, &shell_listener, data);
        }