[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