Initialize color masks lazily
When we don't use a window system drawable, we can't query the color masks at context initialization time. Do it lazily so we're sure to have a current context with a valid framebuffer.
This commit is contained in:
parent
f456116c18
commit
a7cf98ebfc
@ -343,6 +343,26 @@ _clutter_id_to_color (guint id, ClutterColor *col)
|
|||||||
|
|
||||||
ctx = _clutter_context_get_default ();
|
ctx = _clutter_context_get_default ();
|
||||||
|
|
||||||
|
if (ctx->fb_g_mask == 0)
|
||||||
|
{
|
||||||
|
/* Figure out framebuffer masks used for pick */
|
||||||
|
cogl_get_bitmasks (&ctx->fb_r_mask,
|
||||||
|
&ctx->fb_g_mask,
|
||||||
|
&ctx->fb_b_mask, NULL);
|
||||||
|
|
||||||
|
ctx->fb_r_mask_used = ctx->fb_r_mask;
|
||||||
|
ctx->fb_g_mask_used = ctx->fb_g_mask;
|
||||||
|
ctx->fb_b_mask_used = ctx->fb_b_mask;
|
||||||
|
|
||||||
|
/* XXX - describe what "fuzzy picking" is */
|
||||||
|
if (clutter_use_fuzzy_picking)
|
||||||
|
{
|
||||||
|
ctx->fb_r_mask_used--;
|
||||||
|
ctx->fb_g_mask_used--;
|
||||||
|
ctx->fb_b_mask_used--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* compute the numbers we'll store in the components */
|
/* compute the numbers we'll store in the components */
|
||||||
red = (id >> (ctx->fb_g_mask_used+ctx->fb_b_mask_used))
|
red = (id >> (ctx->fb_g_mask_used+ctx->fb_b_mask_used))
|
||||||
& (0xff >> (8-ctx->fb_r_mask_used));
|
& (0xff >> (8-ctx->fb_r_mask_used));
|
||||||
@ -1606,21 +1626,6 @@ clutter_init_real (GError **error)
|
|||||||
|
|
||||||
clutter_text_direction = clutter_get_text_direction ();
|
clutter_text_direction = clutter_get_text_direction ();
|
||||||
|
|
||||||
/* Figure out framebuffer masks used for pick */
|
|
||||||
cogl_get_bitmasks (&ctx->fb_r_mask, &ctx->fb_g_mask, &ctx->fb_b_mask, NULL);
|
|
||||||
|
|
||||||
ctx->fb_r_mask_used = ctx->fb_r_mask;
|
|
||||||
ctx->fb_g_mask_used = ctx->fb_g_mask;
|
|
||||||
ctx->fb_b_mask_used = ctx->fb_b_mask;
|
|
||||||
|
|
||||||
/* XXX - describe what "fuzzy picking" is */
|
|
||||||
if (clutter_use_fuzzy_picking)
|
|
||||||
{
|
|
||||||
ctx->fb_r_mask_used--;
|
|
||||||
ctx->fb_g_mask_used--;
|
|
||||||
ctx->fb_b_mask_used--;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initiate event collection */
|
/* Initiate event collection */
|
||||||
_clutter_backend_init_events (ctx->backend);
|
_clutter_backend_init_events (ctx->backend);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user