[Bf-blender-cvs] [7d030213b25] master: GHOST/Wayland: implement getAllDisplayDimensions

Campbell Barton noreply at git.blender.org
Sat Jun 18 13:28:01 CEST 2022


Commit: 7d030213b259420d176228f6a57af3ccc99d08f8
Author: Campbell Barton
Date:   Sat Jun 18 20:58:00 2022 +1000
Branches: master
https://developer.blender.org/rB7d030213b259420d176228f6a57af3ccc99d08f8

GHOST/Wayland: implement getAllDisplayDimensions

===================================================================

M	intern/ghost/intern/GHOST_SystemWayland.cpp
M	intern/ghost/intern/GHOST_SystemWayland.h

===================================================================

diff --git a/intern/ghost/intern/GHOST_SystemWayland.cpp b/intern/ghost/intern/GHOST_SystemWayland.cpp
index f2caa1e3ce3..db8bfceda9b 100644
--- a/intern/ghost/intern/GHOST_SystemWayland.cpp
+++ b/intern/ghost/intern/GHOST_SystemWayland.cpp
@@ -2372,7 +2372,23 @@ void GHOST_SystemWayland::getMainDisplayDimensions(uint32_t &width, uint32_t &he
 
 void GHOST_SystemWayland::getAllDisplayDimensions(uint32_t &width, uint32_t &height) const
 {
-  getMainDisplayDimensions(width, height);
+  int32_t xy_min[2] = {INT32_MAX, INT32_MAX};
+  int32_t xy_max[2] = {INT32_MIN, INT32_MIN};
+
+  for (const output_t *output : d->outputs) {
+    int32_t xy[2] = {0, 0};
+    if (output->has_position_logical) {
+      xy[0] = output->position_logical[0];
+      xy[1] = output->position_logical[1];
+    }
+    xy_min[0] = std::min(xy_min[0], xy[0]);
+    xy_min[1] = std::min(xy_min[1], xy[1]);
+    xy_max[0] = std::max(xy_max[0], xy[0] + output->size_native[0]);
+    xy_max[1] = std::max(xy_max[1], xy[1] + output->size_native[1]);
+  }
+
+  width = xy_max[0] - xy_min[0];
+  height = xy_max[1] - xy_min[1];
 }
 
 GHOST_IContext *GHOST_SystemWayland::createOffscreenContext(GHOST_GLSettings /*glSettings*/)
diff --git a/intern/ghost/intern/GHOST_SystemWayland.h b/intern/ghost/intern/GHOST_SystemWayland.h
index 04aa4063947..1599e644c68 100644
--- a/intern/ghost/intern/GHOST_SystemWayland.h
+++ b/intern/ghost/intern/GHOST_SystemWayland.h
@@ -32,6 +32,7 @@ struct output_t {
   int32_t size_logical[2] = {0, 0};
   bool has_size_logical = false;
 
+  /** Monitor position in pixels. */
   int32_t position_logical[2] = {0, 0};
   bool has_position_logical = false;



More information about the Bf-blender-cvs mailing list