From ed9b9cad54219f7bb1e21872237de83bc302c117 Mon Sep 17 00:00:00 2001 From: Hosang Kim Date: Fri, 28 Apr 2023 19:03:39 +0900 Subject: [PATCH] TizenWindow: get rotation information from window server Change-Id: Ib0279950cbdcd7f0f320d2432447de8cae219e4c --- libaurum/inc/Impl/TizenWindow.h | 6 +++++- libaurum/src/Impl/TizenDeviceImpl.cc | 18 +++++++++++------- libaurum/src/Impl/TizenWindow.cc | 16 +++++++++++++--- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/libaurum/inc/Impl/TizenWindow.h b/libaurum/inc/Impl/TizenWindow.h index 7c69566..324105c 100644 --- a/libaurum/inc/Impl/TizenWindow.h +++ b/libaurum/inc/Impl/TizenWindow.h @@ -24,11 +24,13 @@ namespace Aurum { class TizenWindow : public std::enable_shared_from_this { public: - TizenWindow(int pid, Rect geometry, bool transformed, bool alpha, int opaque, int visibility, bool focused, bool mapped, int layer, std::string name); + TizenWindow(int pid, Rect 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 getWindowGeometry(); + int getWindowAngle(); + int getTargetAngle(); bool isTransformed(); bool isAlpha(); int getOpaque(); @@ -39,6 +41,8 @@ public: private: int mPid; // window's PID Rect 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 diff --git a/libaurum/src/Impl/TizenDeviceImpl.cc b/libaurum/src/Impl/TizenDeviceImpl.cc index d09c823..83fc1b7 100644 --- a/libaurum/src/Impl/TizenDeviceImpl.cc +++ b/libaurum/src/Impl/TizenDeviceImpl.cc @@ -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> TizenDeviceImpl::mTizenWindows; @@ -484,6 +484,8 @@ std::vector> TizenDeviceImpl::getTizenWindowInfo() int y; int w; int h; + int winAngle; + int targetAngle; gboolean transformed; gboolean alpha; int opaque; @@ -531,19 +533,21 @@ std::vector> 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> 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 geometry = {x, y, w, h}; + Rect geometry = {x, y, w, h}; std::string winName(name); - mTizenWindows.push_back(std::make_shared(pid, geometry, transformed, alpha, opaque, visibility, focused, mapped, layer, winName)); + mTizenWindows.push_back(std::make_shared(pid, geometry, winAngle, targetAngle, transformed, alpha, opaque, visibility, focused, mapped, layer, winName)); } } diff --git a/libaurum/src/Impl/TizenWindow.cc b/libaurum/src/Impl/TizenWindow.cc index 12f226e..17a4277 100644 --- a/libaurum/src/Impl/TizenWindow.cc +++ b/libaurum/src/Impl/TizenWindow.cc @@ -20,8 +20,8 @@ using namespace Aurum; -TizenWindow::TizenWindow(int pid, Rect 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 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 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 +} -- 2.7.4