cogl/onscreen-glx: Store refresh rate directly
Instead of the CoglOutput. This removes any necessity of refcounting, and allows simplifying some code. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3792>
This commit is contained in:
parent
c1c8a4ba09
commit
94d69c3252
@ -46,7 +46,7 @@ struct _CoglOnscreenGlx
|
|||||||
|
|
||||||
Window xwin;
|
Window xwin;
|
||||||
int x, y;
|
int x, y;
|
||||||
CoglOutput *output;
|
float refresh_rate;
|
||||||
|
|
||||||
GLXDrawable glxwin;
|
GLXDrawable glxwin;
|
||||||
uint32_t last_swap_vsync_counter;
|
uint32_t last_swap_vsync_counter;
|
||||||
@ -224,8 +224,6 @@ cogl_onscreen_glx_dispose (GObject *object)
|
|||||||
|
|
||||||
G_OBJECT_CLASS (cogl_onscreen_glx_parent_class)->dispose (object);
|
G_OBJECT_CLASS (cogl_onscreen_glx_parent_class)->dispose (object);
|
||||||
|
|
||||||
g_clear_object (&onscreen_glx->output);
|
|
||||||
|
|
||||||
if (onscreen_glx->glxwin != None ||
|
if (onscreen_glx->glxwin != None ||
|
||||||
onscreen_glx->xwin != None)
|
onscreen_glx->xwin != None)
|
||||||
{
|
{
|
||||||
@ -545,19 +543,6 @@ cogl_onscreen_glx_get_buffer_age (CoglOnscreen *onscreen)
|
|||||||
return age;
|
return age;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
set_frame_info_output (CoglOnscreen *onscreen,
|
|
||||||
CoglOutput *output)
|
|
||||||
{
|
|
||||||
CoglFrameInfo *info = cogl_onscreen_peek_tail_frame_info (onscreen);
|
|
||||||
|
|
||||||
if (output)
|
|
||||||
{
|
|
||||||
if (output->refresh_rate != 0.0)
|
|
||||||
info->refresh_rate = output->refresh_rate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cogl_onscreen_glx_flush_notification (CoglOnscreen *onscreen)
|
cogl_onscreen_glx_flush_notification (CoglOnscreen *onscreen)
|
||||||
{
|
{
|
||||||
@ -850,7 +835,8 @@ cogl_onscreen_glx_swap_region (CoglOnscreen *onscreen,
|
|||||||
x_max - x_min,
|
x_max - x_min,
|
||||||
y_max - y_min);
|
y_max - y_min);
|
||||||
|
|
||||||
set_frame_info_output (onscreen, output);
|
if (output)
|
||||||
|
info->refresh_rate = output->refresh_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: we don't get SwapComplete events based on how we implement
|
/* XXX: we don't get SwapComplete events based on how we implement
|
||||||
@ -941,7 +927,8 @@ cogl_onscreen_glx_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
onscreen_glx->last_swap_vsync_counter =
|
onscreen_glx->last_swap_vsync_counter =
|
||||||
_cogl_winsys_get_vsync_counter (context);
|
_cogl_winsys_get_vsync_counter (context);
|
||||||
|
|
||||||
set_frame_info_output (onscreen, onscreen_glx->output);
|
if (onscreen_glx->refresh_rate != 0.0)
|
||||||
|
info->refresh_rate = onscreen_glx->refresh_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Window
|
static Window
|
||||||
@ -1004,16 +991,11 @@ cogl_onscreen_glx_update_output (CoglOnscreen *onscreen)
|
|||||||
onscreen_glx->x,
|
onscreen_glx->x,
|
||||||
onscreen_glx->y,
|
onscreen_glx->y,
|
||||||
width, height);
|
width, height);
|
||||||
if (onscreen_glx->output != output)
|
|
||||||
{
|
|
||||||
if (onscreen_glx->output)
|
|
||||||
g_object_unref (onscreen_glx->output);
|
|
||||||
|
|
||||||
onscreen_glx->output = output;
|
|
||||||
|
|
||||||
if (output)
|
if (output)
|
||||||
g_object_ref (onscreen_glx->output);
|
onscreen_glx->refresh_rate = output->refresh_rate;
|
||||||
}
|
else
|
||||||
|
onscreen_glx->refresh_rate = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user