[Bf-blender-cvs] [0d644e6d06d] master: Cleanup: return const vector for system & window outputs() method

Campbell Barton noreply at git.blender.org
Thu Jun 16 06:28:32 CEST 2022


Commit: 0d644e6d06de349b04c5c54f19eff9c6fe00b32a
Author: Campbell Barton
Date:   Thu Jun 16 14:20:34 2022 +1000
Branches: master
https://developer.blender.org/rB0d644e6d06de349b04c5c54f19eff9c6fe00b32a

Cleanup: return const vector for system & window outputs() method

Move the enter/leave logic into methods so the method can return a const
vector which isn't to be manipulated from other functions.

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

M	intern/ghost/intern/GHOST_WindowWayland.cpp
M	intern/ghost/intern/GHOST_WindowWayland.h

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

diff --git a/intern/ghost/intern/GHOST_WindowWayland.cpp b/intern/ghost/intern/GHOST_WindowWayland.cpp
index 7265fe83c69..21e3793d3b1 100644
--- a/intern/ghost/intern/GHOST_WindowWayland.cpp
+++ b/intern/ghost/intern/GHOST_WindowWayland.cpp
@@ -233,14 +233,10 @@ static void surface_handle_enter(void *data,
   if (reg_output == nullptr) {
     return;
   }
-  std::vector<output_t *> &outputs = w->outputs();
-  auto it = std::find(outputs.begin(), outputs.end(), reg_output);
-  if (it != outputs.end()) {
-    return;
-  }
-  outputs.push_back(reg_output);
 
-  w->outputs_changed_update_scale();
+  if (w->outputs_enter(reg_output)) {
+    w->outputs_changed_update_scale();
+  }
 }
 
 static void surface_handle_leave(void *data,
@@ -252,14 +248,10 @@ static void surface_handle_leave(void *data,
   if (reg_output == nullptr) {
     return;
   }
-  std::vector<output_t *> &outputs = w->outputs();
-  auto it = std::find(outputs.begin(), outputs.end(), reg_output);
-  if (it == outputs.end()) {
-    return;
-  }
-  outputs.erase(it);
 
-  w->outputs_changed_update_scale();
+  if (w->outputs_leave(reg_output)) {
+    w->outputs_changed_update_scale();
+  }
 }
 
 struct wl_surface_listener wl_surface_listener = {
@@ -408,7 +400,7 @@ wl_surface *GHOST_WindowWayland::surface() const
   return w->wl_surface;
 }
 
-std::vector<output_t *> &GHOST_WindowWayland::outputs()
+const std::vector<output_t *> &GHOST_WindowWayland::outputs()
 {
   return w->outputs;
 }
@@ -456,6 +448,28 @@ bool GHOST_WindowWayland::outputs_changed_update_scale()
   return changed;
 }
 
+bool GHOST_WindowWayland::outputs_enter(output_t *reg_output)
+{
+  std::vector<output_t *> &outputs = w->outputs;
+  auto it = std::find(outputs.begin(), outputs.end(), reg_output);
+  if (it != outputs.end()) {
+    return false;
+  }
+  outputs.push_back(reg_output);
+  return true;
+}
+
+bool GHOST_WindowWayland::outputs_leave(output_t *reg_output)
+{
+  std::vector<output_t *> &outputs = w->outputs;
+  auto it = std::find(outputs.begin(), outputs.end(), reg_output);
+  if (it == outputs.end()) {
+    return false;
+  }
+  outputs.erase(it);
+  return true;
+}
+
 uint16_t GHOST_WindowWayland::dpi()
 {
   return w->dpi;
diff --git a/intern/ghost/intern/GHOST_WindowWayland.h b/intern/ghost/intern/GHOST_WindowWayland.h
index 948635fc9ae..b6d9fa04079 100644
--- a/intern/ghost/intern/GHOST_WindowWayland.h
+++ b/intern/ghost/intern/GHOST_WindowWayland.h
@@ -103,10 +103,12 @@ class GHOST_WindowWayland : public GHOST_Window {
 
   struct wl_surface *surface() const;
 
-  std::vector<output_t *> &outputs();
-
   output_t *output_find_by_wl(struct wl_output *output);
 
+  const std::vector<output_t *> &outputs();
+
+  bool outputs_enter(output_t *reg_output);
+  bool outputs_leave(output_t *reg_output);
   bool outputs_changed_update_scale();
 
   uint16_t dpi();



More information about the Bf-blender-cvs mailing list