TizenWindow: get rotation information from window server 78/292178/1
authorHosang Kim <hosang12.kim@samsung.com>
Fri, 28 Apr 2023 10:03:39 +0000 (19:03 +0900)
committerHosang Kim <hosang12.kim@samsung.com>
Fri, 28 Apr 2023 10:04:03 +0000 (19:04 +0900)
Change-Id: Ib0279950cbdcd7f0f320d2432447de8cae219e4c

libaurum/inc/Impl/TizenWindow.h
libaurum/src/Impl/TizenDeviceImpl.cc
libaurum/src/Impl/TizenWindow.cc

index 7c69566..324105c 100644 (file)
@@ -24,11 +24,13 @@ namespace Aurum {
 
 class TizenWindow : public std::enable_shared_from_this<TizenWindow> {
 public:
-    TizenWindow(int pid, Rect<int> geometry, bool transformed, bool alpha, int opaque, int visibility, bool focused, bool mapped, int layer, std::string name);
+    TizenWindow(int pid, Rect<int> geometry, int windowAngle, int targetAngle, bool transformed, bool alpha, int opaque, int visibility, bool focused, bool mapped, int layer, std::string name);
     ~TizenWindow();
 
     int getPid();
     Rect<int> getWindowGeometry();
+    int getWindowAngle();
+    int getTargetAngle();
     bool isTransformed();
     bool isAlpha();
     int getOpaque();
@@ -39,6 +41,8 @@ public:
 private:
     int mPid;                   // window's PID
     Rect<int> mWindowGeometry;  // window's geometry
+    int mWindowAngle;           // window's angle
+    int mTargetAngle;           // device's angle
     bool mIsTransformed;        // true : transformed window
     bool mIsAlpha;              // true : alpha
     int mOpaque;                // true : opaque state set window
index d09c823..83fc1b7 100644 (file)
@@ -42,7 +42,7 @@ using namespace AurumInternal;
 #define WM_BUS_NAME "org.enlightenment.wm"
 #define WM_OBJECT_PATH "/org/enlightenment/wm"
 #define WM_INTERFACE_NAME "org.enlightenment.wm.proc"
-#define WM_METHOD_NAME_INFO "GetVisibleWinInfo_v2"
+#define WM_METHOD_NAME_INFO "GetVisibleWinInfo_v3"
 
 std::mutex TizenDeviceImpl::CaptureMutex = std::mutex{};
 std::vector<std::shared_ptr<TizenWindow>> TizenDeviceImpl::mTizenWindows;
@@ -484,6 +484,8 @@ std::vector<std::shared_ptr<TizenWindow>> TizenDeviceImpl::getTizenWindowInfo()
     int y;
     int w;
     int h;
+    int winAngle;
+    int targetAngle;
     gboolean transformed;
     gboolean alpha;
     int opaque;
@@ -531,19 +533,21 @@ std::vector<std::shared_ptr<TizenWindow>> TizenDeviceImpl::getTizenWindowInfo()
         goto out;
     }
 
-    g_variant_get(body, "(a(iiiiibbiibbis))", &iter);
+    g_variant_get(body, "(a(iiiiiiibbiibbis))", &iter);
     if (!iter) {
         LOGE("Failed to get iter");
         goto out;
     }
 
-    LOGI("%-3s | %-6s | %-4s | %-4s | %-4s | %-4s | %-5s | %-5s | %-6s | %-3s | %-7s | %-6s | %-5s | %-20s", "No" ,"PID", "X", "Y", "W", "H", "Trans", "Alpha", "Opaque", "Vis", "Focused", "Mapped", "Layer", "Name");
-    while (g_variant_iter_loop(iter, "(iiiiibbiibbis)",
+    LOGI("%-3s | %-6s | %-4s | %-4s | %-4s | %-4s | %-9s | %-12s | %-5s | %-5s | %-6s | %-3s | %-7s | %-6s | %-5s | %-20s", "No" ,"PID", "X", "Y", "W", "H", "Win Angle", "Target Angle", "Trans", "Alpha", "Opaque", "Vis", "Focused", "Mapped", "Layer", "Name");
+    while (g_variant_iter_loop(iter, "(iiiiiiibbiibbis)",
                 &pid,
                 &x,
                 &y,
                 &w,
                 &h,
+                &winAngle,
+                &targetAngle,
                 &transformed,
                 &alpha,
                 &opaque,
@@ -552,12 +556,12 @@ std::vector<std::shared_ptr<TizenWindow>> TizenDeviceImpl::getTizenWindowInfo()
                 &mapped,
                 &layer,
                 &name)) {
-        LOGI("%-3d | %-6d | %-4d | %-4d | %-4d | %-4d | %-5d | %-5d | %-6d | %-3d | %-7d | %-6d | %-5d | %-20s", idx++, pid, x,y,w,h, transformed, alpha, opaque, visibility, focused, mapped, layer, name);
+        LOGI("%-3d | %-6d | %-4d | %-4d | %-4d | %-4d | %-9d | %-12d | %-5d | %-5d | %-6d | %-3d | %-7d | %-6d | %-5d | %-20s", idx++, pid, x,y,w,h, winAngle, targetAngle, transformed, alpha, opaque, visibility, focused, mapped, layer, name);
         if (visibility == 0 && pid > 0)
         {
-            Rect<int> geometry = {x,  y, w, h};
+            Rect<int> geometry = {x, y, w, h};
             std::string winName(name);
-            mTizenWindows.push_back(std::make_shared<Aurum::TizenWindow>(pid, geometry, transformed, alpha, opaque, visibility, focused, mapped, layer, winName));
+            mTizenWindows.push_back(std::make_shared<Aurum::TizenWindow>(pid, geometry, winAngle, targetAngle, transformed, alpha, opaque, visibility, focused, mapped, layer, winName));
         }
     }
 
index 12f226e..17a4277 100644 (file)
@@ -20,8 +20,8 @@
 
 using namespace Aurum;
 
-TizenWindow::TizenWindow(int pid, Rect<int> geometry, bool transformed, bool alpha, int opaque, int visibility, bool focused, bool mapped, int layer, std::string name)
-    : mPid(pid), mWindowGeometry(geometry), mIsTransformed(transformed), mIsAlpha(alpha), mOpaque(opaque), mVisibility(visibility), mIsFocused(focused), mIsMapped(mapped), mLayer(layer), mName(name)
+TizenWindow::TizenWindow(int pid, Rect<int> geometry, int windowAngle, int targetAngle, bool transformed, bool alpha, int opaque, int visibility, bool focused, bool mapped, int layer, std::string name)
+    : mPid(pid), mWindowGeometry(geometry), mWindowAngle(windowAngle), mTargetAngle(targetAngle),mIsTransformed(transformed), mIsAlpha(alpha), mOpaque(opaque), mVisibility(visibility), mIsFocused(focused), mIsMapped(mapped), mLayer(layer), mName(name)
 {
 
 }
@@ -41,6 +41,16 @@ Rect<int> TizenWindow::getWindowGeometry()
     return mWindowGeometry;
 }
 
+int TizenWindow::getWindowAngle()
+{
+    return mWindowAngle;
+}
+
+int TizenWindow::getTargetAngle()
+{
+    return mTargetAngle;
+}
+
 bool TizenWindow::isTransformed()
 {
     return mIsTransformed;
@@ -74,4 +84,4 @@ bool TizenWindow::isMapped()
 std::string TizenWindow::getName()
 {
     return mName;
-}
\ No newline at end of file
+}