From 653ba4a7a77d868b650deb622dbad08f90829c7b Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 31 May 2024 19:10:06 +0200 Subject: [PATCH] cogl/renderer: Move output list to CoglXlibRenderer It's the only place where it's used. Part-of: --- cogl/cogl/cogl-renderer-private.h | 2 -- cogl/cogl/cogl-xlib-renderer-private.h | 2 ++ cogl/cogl/cogl-xlib-renderer.c | 28 ++++++++++++++++---------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/cogl/cogl/cogl-renderer-private.h b/cogl/cogl/cogl-renderer-private.h index f71d71eb9..f1dbab2b9 100644 --- a/cogl/cogl/cogl-renderer-private.h +++ b/cogl/cogl/cogl-renderer-private.h @@ -57,8 +57,6 @@ struct _CoglRenderer CoglList idle_closures; - GList *outputs; - #ifdef HAVE_X11 Display *foreign_xdpy; gboolean xlib_enable_event_retrieval; diff --git a/cogl/cogl/cogl-xlib-renderer-private.h b/cogl/cogl/cogl-xlib-renderer-private.h index f8f8ba70f..2d0b997bb 100644 --- a/cogl/cogl/cogl-xlib-renderer-private.h +++ b/cogl/cogl/cogl-xlib-renderer-private.h @@ -42,6 +42,8 @@ typedef struct _CoglXlibRenderer Display *xdpy; + GList *outputs; + unsigned long outputs_update_serial; } CoglXlibRenderer; diff --git a/cogl/cogl/cogl-xlib-renderer.c b/cogl/cogl/cogl-xlib-renderer.c index 1c4cde93a..3923d925a 100644 --- a/cogl/cogl/cogl-xlib-renderer.c +++ b/cogl/cogl/cogl-xlib-renderer.c @@ -264,7 +264,7 @@ update_outputs (CoglRenderer *renderer, new_outputs = g_list_sort (new_outputs, (GCompareFunc)compare_outputs); l = new_outputs; - m = renderer->outputs; + m = xlib_renderer->outputs; while (l || m) { @@ -285,9 +285,13 @@ update_outputs (CoglRenderer *renderer, if (!_cogl_output_values_equal (output_l, output_m)) { - renderer->outputs = g_list_remove_link (renderer->outputs, m); - renderer->outputs = g_list_insert_before (renderer->outputs, - m_next, output_l); + xlib_renderer->outputs = + g_list_remove_link (xlib_renderer->outputs, m); + + xlib_renderer->outputs = + g_list_insert_before (xlib_renderer->outputs, + m_next, + output_l); g_object_ref (output_l); changed = TRUE; @@ -298,8 +302,8 @@ update_outputs (CoglRenderer *renderer, } else if (cmp < 0) { - renderer->outputs = - g_list_insert_before (renderer->outputs, m, output_l); + xlib_renderer->outputs = + g_list_insert_before (xlib_renderer->outputs, m, output_l); g_object_ref (output_l); changed = TRUE; l = l->next; @@ -307,7 +311,8 @@ update_outputs (CoglRenderer *renderer, else { GList *m_next = m->next; - renderer->outputs = g_list_remove_link (renderer->outputs, m); + xlib_renderer->outputs = + g_list_remove_link (xlib_renderer->outputs, m); changed = TRUE; m = m_next; } @@ -326,7 +331,7 @@ update_outputs (CoglRenderer *renderer, else COGL_NOTE (WINSYS, "Outputs:"); - for (l = renderer->outputs; l; l = l->next) + for (l = xlib_renderer->outputs; l; l = l->next) { CoglOutput *output = l->data; const char *subpixel_string; @@ -476,8 +481,8 @@ _cogl_xlib_renderer_disconnect (CoglRenderer *renderer) CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (renderer); - g_list_free_full (renderer->outputs, (GDestroyNotify)g_object_unref); - renderer->outputs = NULL; + g_list_free_full (xlib_renderer->outputs, (GDestroyNotify)g_object_unref); + xlib_renderer->outputs = NULL; if (!renderer->foreign_xdpy && xlib_renderer->xdpy) XCloseDisplay (xlib_renderer->xdpy); @@ -531,13 +536,14 @@ _cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer, int width, int height) { + CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (renderer); int max_overlap = 0; CoglOutput *max_overlapped = NULL; GList *l; int xa1 = x, xa2 = x + width; int ya1 = y, ya2 = y + height; - for (l = renderer->outputs; l; l = l->next) + for (l = xlib_renderer->outputs; l; l = l->next) { CoglOutput *output = l->data; int xb1 = output->x, xb2 = output->x + output->width;