cogl/renderer: Move output list to CoglXlibRenderer
It's the only place where it's used. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3792>
This commit is contained in:
parent
94d69c3252
commit
653ba4a7a7
3 changed files with 19 additions and 13 deletions
|
@ -57,8 +57,6 @@ struct _CoglRenderer
|
||||||
|
|
||||||
CoglList idle_closures;
|
CoglList idle_closures;
|
||||||
|
|
||||||
GList *outputs;
|
|
||||||
|
|
||||||
#ifdef HAVE_X11
|
#ifdef HAVE_X11
|
||||||
Display *foreign_xdpy;
|
Display *foreign_xdpy;
|
||||||
gboolean xlib_enable_event_retrieval;
|
gboolean xlib_enable_event_retrieval;
|
||||||
|
|
|
@ -42,6 +42,8 @@ typedef struct _CoglXlibRenderer
|
||||||
|
|
||||||
Display *xdpy;
|
Display *xdpy;
|
||||||
|
|
||||||
|
GList *outputs;
|
||||||
|
|
||||||
unsigned long outputs_update_serial;
|
unsigned long outputs_update_serial;
|
||||||
} CoglXlibRenderer;
|
} CoglXlibRenderer;
|
||||||
|
|
||||||
|
|
|
@ -264,7 +264,7 @@ update_outputs (CoglRenderer *renderer,
|
||||||
new_outputs = g_list_sort (new_outputs, (GCompareFunc)compare_outputs);
|
new_outputs = g_list_sort (new_outputs, (GCompareFunc)compare_outputs);
|
||||||
|
|
||||||
l = new_outputs;
|
l = new_outputs;
|
||||||
m = renderer->outputs;
|
m = xlib_renderer->outputs;
|
||||||
|
|
||||||
while (l || m)
|
while (l || m)
|
||||||
{
|
{
|
||||||
|
@ -285,9 +285,13 @@ update_outputs (CoglRenderer *renderer,
|
||||||
|
|
||||||
if (!_cogl_output_values_equal (output_l, output_m))
|
if (!_cogl_output_values_equal (output_l, output_m))
|
||||||
{
|
{
|
||||||
renderer->outputs = g_list_remove_link (renderer->outputs, m);
|
xlib_renderer->outputs =
|
||||||
renderer->outputs = g_list_insert_before (renderer->outputs,
|
g_list_remove_link (xlib_renderer->outputs, m);
|
||||||
m_next, output_l);
|
|
||||||
|
xlib_renderer->outputs =
|
||||||
|
g_list_insert_before (xlib_renderer->outputs,
|
||||||
|
m_next,
|
||||||
|
output_l);
|
||||||
g_object_ref (output_l);
|
g_object_ref (output_l);
|
||||||
|
|
||||||
changed = TRUE;
|
changed = TRUE;
|
||||||
|
@ -298,8 +302,8 @@ update_outputs (CoglRenderer *renderer,
|
||||||
}
|
}
|
||||||
else if (cmp < 0)
|
else if (cmp < 0)
|
||||||
{
|
{
|
||||||
renderer->outputs =
|
xlib_renderer->outputs =
|
||||||
g_list_insert_before (renderer->outputs, m, output_l);
|
g_list_insert_before (xlib_renderer->outputs, m, output_l);
|
||||||
g_object_ref (output_l);
|
g_object_ref (output_l);
|
||||||
changed = TRUE;
|
changed = TRUE;
|
||||||
l = l->next;
|
l = l->next;
|
||||||
|
@ -307,7 +311,8 @@ update_outputs (CoglRenderer *renderer,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GList *m_next = m->next;
|
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;
|
changed = TRUE;
|
||||||
m = m_next;
|
m = m_next;
|
||||||
}
|
}
|
||||||
|
@ -326,7 +331,7 @@ update_outputs (CoglRenderer *renderer,
|
||||||
else
|
else
|
||||||
COGL_NOTE (WINSYS, "Outputs:");
|
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;
|
CoglOutput *output = l->data;
|
||||||
const char *subpixel_string;
|
const char *subpixel_string;
|
||||||
|
@ -476,8 +481,8 @@ _cogl_xlib_renderer_disconnect (CoglRenderer *renderer)
|
||||||
CoglXlibRenderer *xlib_renderer =
|
CoglXlibRenderer *xlib_renderer =
|
||||||
_cogl_xlib_renderer_get_data (renderer);
|
_cogl_xlib_renderer_get_data (renderer);
|
||||||
|
|
||||||
g_list_free_full (renderer->outputs, (GDestroyNotify)g_object_unref);
|
g_list_free_full (xlib_renderer->outputs, (GDestroyNotify)g_object_unref);
|
||||||
renderer->outputs = NULL;
|
xlib_renderer->outputs = NULL;
|
||||||
|
|
||||||
if (!renderer->foreign_xdpy && xlib_renderer->xdpy)
|
if (!renderer->foreign_xdpy && xlib_renderer->xdpy)
|
||||||
XCloseDisplay (xlib_renderer->xdpy);
|
XCloseDisplay (xlib_renderer->xdpy);
|
||||||
|
@ -531,13 +536,14 @@ _cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer,
|
||||||
int width,
|
int width,
|
||||||
int height)
|
int height)
|
||||||
{
|
{
|
||||||
|
CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (renderer);
|
||||||
int max_overlap = 0;
|
int max_overlap = 0;
|
||||||
CoglOutput *max_overlapped = NULL;
|
CoglOutput *max_overlapped = NULL;
|
||||||
GList *l;
|
GList *l;
|
||||||
int xa1 = x, xa2 = x + width;
|
int xa1 = x, xa2 = x + width;
|
||||||
int ya1 = y, ya2 = y + height;
|
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;
|
CoglOutput *output = l->data;
|
||||||
int xb1 = output->x, xb2 = output->x + output->width;
|
int xb1 = output->x, xb2 = output->x + output->width;
|
||||||
|
|
Loading…
Reference in a new issue