st: Fix a bunch of cogl deprecations

This commit is contained in:
Florian Müllner 2015-09-26 04:20:22 +02:00
parent 9acdb8012c
commit 882f5fa79e
4 changed files with 100 additions and 79 deletions

View File

@ -1376,7 +1376,8 @@ st_theme_node_load_background_image (StThemeNode *node)
node->background_material = _st_create_texture_pipeline (node->background_texture); node->background_material = _st_create_texture_pipeline (node->background_texture);
if (node->background_repeat) if (node->background_repeat)
cogl_material_set_layer_wrap_mode (node->background_material, 0, COGL_MATERIAL_WRAP_MODE_REPEAT); cogl_pipeline_set_layer_wrap_mode (node->background_material, 0,
COGL_PIPELINE_WRAP_MODE_REPEAT);
if (background_image_shadow_spec) if (background_image_shadow_spec)
{ {
@ -1578,16 +1579,18 @@ paint_material_with_opacity (CoglHandle material,
ClutterActorBox *coords, ClutterActorBox *coords,
guint8 paint_opacity) guint8 paint_opacity)
{ {
cogl_material_set_color4ub (material, CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
cogl_pipeline_set_color4ub (material,
paint_opacity, paint_opacity, paint_opacity, paint_opacity); paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_set_source (material);
if (coords) if (coords)
cogl_rectangle_with_texture_coords (box->x1, box->y1, box->x2, box->y2, cogl_framebuffer_draw_textured_rectangle (fb, material,
box->x1, box->y1, box->x2, box->y2,
coords->x1, coords->y1, coords->x2, coords->y2); coords->x1, coords->y1, coords->x2, coords->y2);
else else
cogl_rectangle (box->x1, box->y1, box->x2, box->y2); cogl_framebuffer_draw_rectangle (fb, material,
box->x1, box->y1, box->x2, box->y2);
} }
static void static void
@ -1596,6 +1599,7 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
guint8 paint_opacity) guint8 paint_opacity)
{ {
StThemeNode *node = state->node; StThemeNode *node = state->node;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
float width, height; float width, height;
guint border_width[4]; guint border_width[4];
guint border_radius[4]; guint border_radius[4];
@ -1702,30 +1706,37 @@ st_theme_node_paint_borders (StThemeNodePaintState *state,
if (state->corner_material[corner_id] == COGL_INVALID_HANDLE) if (state->corner_material[corner_id] == COGL_INVALID_HANDLE)
continue; continue;
cogl_material_set_color4ub (state->corner_material[corner_id], cogl_pipeline_set_color4ub (state->corner_material[corner_id],
paint_opacity, paint_opacity, paint_opacity, paint_opacity,
paint_opacity, paint_opacity); paint_opacity, paint_opacity);
cogl_set_source (state->corner_material[corner_id]);
switch (corner_id) switch (corner_id)
{ {
case ST_CORNER_TOPLEFT: case ST_CORNER_TOPLEFT:
cogl_rectangle_with_texture_coords (0, 0, cogl_framebuffer_draw_textured_rectangle (fb,
state->corner_material[corner_id], 0, 0,
max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT], max_width_radius[ST_CORNER_TOPLEFT],
0, 0, 0.5, 0.5); 0, 0, 0.5, 0.5);
break; break;
case ST_CORNER_TOPRIGHT: case ST_CORNER_TOPRIGHT:
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_TOPRIGHT], 0, cogl_framebuffer_draw_textured_rectangle (fb,
state->corner_material[corner_id],
width - max_width_radius[ST_CORNER_TOPRIGHT], 0,
width, max_width_radius[ST_CORNER_TOPRIGHT], width, max_width_radius[ST_CORNER_TOPRIGHT],
0.5, 0, 1, 0.5); 0.5, 0, 1, 0.5);
break; break;
case ST_CORNER_BOTTOMRIGHT: case ST_CORNER_BOTTOMRIGHT:
cogl_rectangle_with_texture_coords (width - max_width_radius[ST_CORNER_BOTTOMRIGHT], height - max_width_radius[ST_CORNER_BOTTOMRIGHT], cogl_framebuffer_draw_textured_rectangle (fb,
state->corner_material[corner_id],
width - max_width_radius[ST_CORNER_BOTTOMRIGHT],
height - max_width_radius[ST_CORNER_BOTTOMRIGHT],
width, height, width, height,
0.5, 0.5, 1, 1); 0.5, 0.5, 1, 1);
break; break;
case ST_CORNER_BOTTOMLEFT: case ST_CORNER_BOTTOMLEFT:
cogl_rectangle_with_texture_coords (0, height - max_width_radius[ST_CORNER_BOTTOMLEFT], cogl_framebuffer_draw_textured_rectangle (fb,
state->corner_material[corner_id],
0, height - max_width_radius[ST_CORNER_BOTTOMLEFT],
max_width_radius[ST_CORNER_BOTTOMLEFT], height, max_width_radius[ST_CORNER_BOTTOMLEFT], height,
0, 0.5, 0.5, 1); 0, 0.5, 0.5, 1);
break; break;
@ -1868,6 +1879,7 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
guint8 paint_opacity) guint8 paint_opacity)
{ {
StThemeNode *node = state->node; StThemeNode *node = state->node;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
guint border_radius[4]; guint border_radius[4];
CoglColor color; CoglColor color;
StShadow *box_shadow_spec; StShadow *box_shadow_spec;
@ -1969,16 +1981,14 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
right += xoffset; right += xoffset;
/* Setup pipeline */ /* Setup pipeline */
cogl_color_set_from_4ub (&color, cogl_color_init_from_4ub (&color,
box_shadow_spec->color.red * paint_opacity / 255, box_shadow_spec->color.red * paint_opacity / 255,
box_shadow_spec->color.green * paint_opacity / 255, box_shadow_spec->color.green * paint_opacity / 255,
box_shadow_spec->color.blue * paint_opacity / 255, box_shadow_spec->color.blue * paint_opacity / 255,
box_shadow_spec->color.alpha * paint_opacity / 255); box_shadow_spec->color.alpha * paint_opacity / 255);
cogl_color_premultiply (&color); cogl_color_premultiply (&color);
cogl_material_set_layer_combine_constant (state->box_shadow_material, 0, &color); cogl_pipeline_set_layer_combine_constant (state->box_shadow_material, 0, &color);
cogl_set_source (state->box_shadow_material);
idx = 0; idx = 0;
@ -2106,7 +2116,8 @@ st_theme_node_paint_sliced_shadow (StThemeNodePaintState *state,
} }
} }
cogl_rectangles_with_texture_coords (rectangles, idx / 8); cogl_framebuffer_draw_textured_rectangles (fb, state->box_shadow_material,
rectangles, idx / 8);
#if 0 #if 0
/* Visual feedback on shadow's 9-slice and orignal offscreen buffer, /* Visual feedback on shadow's 9-slice and orignal offscreen buffer,
@ -2186,19 +2197,18 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state)
state->box_shadow_height, state->box_shadow_height,
COGL_TEXTURE_NO_SLICING, COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY); COGL_PIXEL_FORMAT_ANY);
offscreen = cogl_offscreen_new_to_texture (buffer); offscreen = cogl_offscreen_new_with_texture (buffer);
if (offscreen != COGL_INVALID_HANDLE) if (offscreen != COGL_INVALID_HANDLE)
{ {
ClutterActorBox box = { 0, 0, state->box_shadow_width, state->box_shadow_height}; ClutterActorBox box = { 0, 0, state->box_shadow_width, state->box_shadow_height};
CoglColor clear_color;
cogl_framebuffer_orthographic (offscreen, 0, 0,
state->box_shadow_width,
state->box_shadow_height, 0, 1.0);
cogl_framebuffer_clear4f (offscreen, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 0);
cogl_push_framebuffer (offscreen); cogl_push_framebuffer (offscreen);
cogl_ortho (0, state->box_shadow_width, state->box_shadow_height, 0, 0, 1.0);
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
st_theme_node_paint_borders (state, &box, 0xFF); st_theme_node_paint_borders (state, &box, 0xFF);
cogl_pop_framebuffer (); cogl_pop_framebuffer ();
cogl_handle_unref (offscreen); cogl_handle_unref (offscreen);
@ -2215,6 +2225,7 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
float height, float height,
guint8 paint_opacity) guint8 paint_opacity)
{ {
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
gfloat ex, ey; gfloat ex, ey;
gfloat tx1, ty1, tx2, ty2; gfloat tx1, ty1, tx2, ty2;
gint border_left, border_right, border_top, border_bottom; gint border_left, border_right, border_top, border_bottom;
@ -2245,11 +2256,9 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
ey = border_bottom; /* FIXME ? */ ey = border_bottom; /* FIXME ? */
material = node->border_slices_material; material = node->border_slices_material;
cogl_material_set_color4ub (material, cogl_pipeline_set_color4ub (material,
paint_opacity, paint_opacity, paint_opacity, paint_opacity); paint_opacity, paint_opacity, paint_opacity, paint_opacity);
cogl_set_source (material);
{ {
float rectangles[] = float rectangles[] =
{ {
@ -2299,7 +2308,7 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
1.0, 1.0 1.0, 1.0
}; };
cogl_rectangles_with_texture_coords (rectangles, 9); cogl_framebuffer_draw_textured_rectangles (fb, material, rectangles, 9);
} }
} }
@ -2513,6 +2522,7 @@ st_theme_node_paint (StThemeNode *node,
{ {
ClutterActorBox background_box; ClutterActorBox background_box;
ClutterActorBox texture_coords; ClutterActorBox texture_coords;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
gboolean has_visible_outline; gboolean has_visible_outline;
/* If the node doesn't have an opaque or repeating background or /* If the node doesn't have an opaque or repeating background or
@ -2524,7 +2534,9 @@ st_theme_node_paint (StThemeNode *node,
get_background_position (node, &allocation, &background_box, &texture_coords); get_background_position (node, &allocation, &background_box, &texture_coords);
if (has_visible_outline || node->background_repeat) if (has_visible_outline || node->background_repeat)
cogl_clip_push_rectangle (allocation.x1, allocation.y1, allocation.x2, allocation.y2); cogl_framebuffer_push_rectangle_clip (fb,
allocation.x1, allocation.y1,
allocation.x2, allocation.y2);
/* CSS based drop shadows /* CSS based drop shadows
* *
@ -2551,7 +2563,7 @@ st_theme_node_paint (StThemeNode *node,
paint_opacity); paint_opacity);
if (has_visible_outline || node->background_repeat) if (has_visible_outline || node->background_repeat)
cogl_clip_pop (); cogl_framebuffer_pop_clip (fb);
} }
} }

View File

@ -107,11 +107,11 @@ struct _StThemeNode {
int box_shadow_min_width; int box_shadow_min_width;
int box_shadow_min_height; int box_shadow_min_height;
CoglHandle border_slices_texture; CoglPipeline *border_slices_texture;
CoglHandle border_slices_material; CoglPipeline *border_slices_material;
CoglHandle background_texture; CoglPipeline *background_texture;
CoglHandle background_material; CoglPipeline *background_material;
CoglHandle background_shadow_material; CoglPipeline *background_shadow_material;
StThemeNodePaintState cached_state; StThemeNodePaintState cached_state;
}; };

View File

@ -240,7 +240,6 @@ setup_framebuffers (StThemeNodeTransition *transition,
const ClutterActorBox *allocation) const ClutterActorBox *allocation)
{ {
StThemeNodeTransitionPrivate *priv = transition->priv; StThemeNodeTransitionPrivate *priv = transition->priv;
CoglColor clear_color = { 0, 0, 0, 0 };
guint width, height; guint width, height;
/* template material to avoid unnecessary shader compilation */ /* template material to avoid unnecessary shader compilation */
@ -269,11 +268,11 @@ setup_framebuffers (StThemeNodeTransition *transition,
if (priv->old_offscreen) if (priv->old_offscreen)
cogl_handle_unref (priv->old_offscreen); cogl_handle_unref (priv->old_offscreen);
priv->old_offscreen = cogl_offscreen_new_to_texture (priv->old_texture); priv->old_offscreen = cogl_offscreen_new_with_texture (priv->old_texture);
if (priv->new_offscreen) if (priv->new_offscreen)
cogl_handle_unref (priv->new_offscreen); cogl_handle_unref (priv->new_offscreen);
priv->new_offscreen = cogl_offscreen_new_to_texture (priv->new_texture); priv->new_offscreen = cogl_offscreen_new_with_texture (priv->new_texture);
g_return_val_if_fail (priv->old_offscreen != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->old_offscreen != COGL_INVALID_HANDLE, FALSE);
g_return_val_if_fail (priv->new_offscreen != COGL_INVALID_HANDLE, FALSE); g_return_val_if_fail (priv->new_offscreen != COGL_INVALID_HANDLE, FALSE);
@ -282,40 +281,49 @@ setup_framebuffers (StThemeNodeTransition *transition,
{ {
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE)) if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
{ {
material_template = cogl_material_new (); CoglContext *ctx =
clutter_backend_get_cogl_context (clutter_get_default_backend ());
material_template = cogl_pipeline_new (ctx);
cogl_material_set_layer_combine (material_template, 0, cogl_pipeline_set_layer_combine (material_template, 0,
"RGBA = REPLACE (TEXTURE)", "RGBA = REPLACE (TEXTURE)",
NULL); NULL);
cogl_material_set_layer_combine (material_template, 1, cogl_pipeline_set_layer_combine (material_template, 1,
"RGBA = INTERPOLATE (PREVIOUS, " "RGBA = INTERPOLATE (PREVIOUS, "
"TEXTURE, " "TEXTURE, "
"CONSTANT[A])", "CONSTANT[A])",
NULL); NULL);
cogl_material_set_layer_combine (material_template, 2, cogl_pipeline_set_layer_combine (material_template, 2,
"RGBA = MODULATE (PREVIOUS, " "RGBA = MODULATE (PREVIOUS, "
"PRIMARY)", "PRIMARY)",
NULL); NULL);
} }
priv->material = cogl_material_copy (material_template); priv->material = cogl_pipeline_copy (material_template);
} }
cogl_material_set_layer (priv->material, 0, priv->new_texture); cogl_pipeline_set_layer_texture (priv->material, 0, priv->new_texture);
cogl_material_set_layer (priv->material, 1, priv->old_texture); cogl_pipeline_set_layer_texture (priv->material, 1, priv->old_texture);
cogl_framebuffer_clear4f (priv->old_offscreen, COGL_BUFFER_BIT_COLOR,
0, 0, 0, 0);
cogl_framebuffer_orthographic (priv->old_offscreen,
priv->offscreen_box.x1,
priv->offscreen_box.y1,
priv->offscreen_box.x2,
priv->offscreen_box.y2, 0.0, 1.0);
cogl_push_framebuffer (priv->old_offscreen); cogl_push_framebuffer (priv->old_offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2,
priv->offscreen_box.y2, priv->offscreen_box.y1,
0.0, 1.0);
st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, allocation, 255); st_theme_node_paint (priv->old_theme_node, &priv->old_paint_state, allocation, 255);
cogl_pop_framebuffer (); cogl_pop_framebuffer ();
cogl_framebuffer_clear4f (priv->new_offscreen, COGL_BUFFER_BIT_COLOR,
0, 0, 0, 0);
cogl_framebuffer_orthographic (priv->new_offscreen,
priv->offscreen_box.x1,
priv->offscreen_box.y1,
priv->offscreen_box.x2,
priv->offscreen_box.y2, 0.0, 1.0);
cogl_push_framebuffer (priv->new_offscreen); cogl_push_framebuffer (priv->new_offscreen);
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
cogl_ortho (priv->offscreen_box.x1, priv->offscreen_box.x2,
priv->offscreen_box.y2, priv->offscreen_box.y1,
0.0, 1.0);
st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, allocation, 255); st_theme_node_paint (priv->new_theme_node, &priv->new_paint_state, allocation, 255);
cogl_pop_framebuffer (); cogl_pop_framebuffer ();
@ -328,6 +336,7 @@ st_theme_node_transition_paint (StThemeNodeTransition *transition,
guint8 paint_opacity) guint8 paint_opacity)
{ {
StThemeNodeTransitionPrivate *priv = transition->priv; StThemeNodeTransitionPrivate *priv = transition->priv;
CoglFramebuffer *fb = cogl_get_draw_framebuffer ();
CoglColor constant; CoglColor constant;
float tex_coords[] = { float tex_coords[] = {
@ -352,16 +361,16 @@ st_theme_node_transition_paint (StThemeNodeTransition *transition,
return; return;
} }
cogl_color_set_from_4f (&constant, 0., 0., 0., cogl_color_init_from_4f (&constant, 0., 0., 0.,
clutter_timeline_get_progress (priv->timeline)); clutter_timeline_get_progress (priv->timeline));
cogl_material_set_layer_combine_constant (priv->material, 1, &constant); cogl_pipeline_set_layer_combine_constant (priv->material, 1, &constant);
cogl_material_set_color4ub (priv->material, cogl_pipeline_set_color4ub (priv->material,
paint_opacity, paint_opacity, paint_opacity, paint_opacity,
paint_opacity, paint_opacity); paint_opacity, paint_opacity);
cogl_set_source (priv->material); cogl_framebuffer_draw_multitextured_rectangle (fb, priv->material,
cogl_rectangle_with_multitexture_coords (priv->offscreen_box.x1, priv->offscreen_box.x1,
priv->offscreen_box.y1, priv->offscreen_box.y1,
priv->offscreen_box.x2, priv->offscreen_box.x2,
priv->offscreen_box.y2, priv->offscreen_box.y2,

View File

@ -104,9 +104,9 @@ struct _StThemeNodePaintState {
float box_shadow_width; float box_shadow_width;
float box_shadow_height; float box_shadow_height;
CoglHandle box_shadow_material; CoglPipeline *box_shadow_material;
CoglHandle prerendered_texture; CoglPipeline *prerendered_texture;
CoglHandle prerendered_material; CoglPipeline *prerendered_material;
CoglHandle corner_material[4]; CoglHandle corner_material[4];
}; };