Adapt to painting and picking API change
While still leaving them unused, pass around ClutterPaintContext and ClutterPickContext when painting and picking. The reason for splitting this change up in two is to make it possible to bisect easier in between the API change and the change to using the framebuffer passed around with the temporary contexts. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/827
This commit is contained in:
parent
73776508b3
commit
988a0e7314
@ -472,9 +472,9 @@ class ObjInspector extends St.ScrollView {
|
|||||||
|
|
||||||
var RedBorderEffect = GObject.registerClass(
|
var RedBorderEffect = GObject.registerClass(
|
||||||
class RedBorderEffect extends Clutter.Effect {
|
class RedBorderEffect extends Clutter.Effect {
|
||||||
vfunc_paint() {
|
vfunc_paint(paintContext) {
|
||||||
let actor = this.get_actor();
|
let actor = this.get_actor();
|
||||||
actor.continue_paint();
|
actor.continue_paint(paintContext);
|
||||||
|
|
||||||
let color = new Cogl.Color();
|
let color = new Cogl.Color();
|
||||||
color.init_from_4ub(0xff, 0, 0, 0xc4);
|
color.init_from_4ub(0xff, 0, 0, 0xc4);
|
||||||
|
@ -142,8 +142,8 @@ class UserWidgetLabel extends St.Widget {
|
|||||||
this._currentLabel.allocate(childBox, flags);
|
this._currentLabel.allocate(childBox, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
vfunc_paint() {
|
vfunc_paint(paintContext) {
|
||||||
this._currentLabel.paint();
|
this._currentLabel.paint(paintContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateUser() {
|
_updateUser() {
|
||||||
|
@ -26,7 +26,8 @@ struct _ShellGLSLEffectPrivate
|
|||||||
G_DEFINE_TYPE_WITH_PRIVATE (ShellGLSLEffect, shell_glsl_effect, CLUTTER_TYPE_OFFSCREEN_EFFECT);
|
G_DEFINE_TYPE_WITH_PRIVATE (ShellGLSLEffect, shell_glsl_effect, CLUTTER_TYPE_OFFSCREEN_EFFECT);
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
shell_glsl_effect_pre_paint (ClutterEffect *effect)
|
shell_glsl_effect_pre_paint (ClutterEffect *effect,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
ShellGLSLEffect *self = SHELL_GLSL_EFFECT (effect);
|
ShellGLSLEffect *self = SHELL_GLSL_EFFECT (effect);
|
||||||
ClutterOffscreenEffect *offscreen_effect = CLUTTER_OFFSCREEN_EFFECT (effect);
|
ClutterOffscreenEffect *offscreen_effect = CLUTTER_OFFSCREEN_EFFECT (effect);
|
||||||
@ -51,7 +52,7 @@ shell_glsl_effect_pre_paint (ClutterEffect *effect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
parent_class = CLUTTER_EFFECT_CLASS (shell_glsl_effect_parent_class);
|
parent_class = CLUTTER_EFFECT_CLASS (shell_glsl_effect_parent_class);
|
||||||
success = parent_class->pre_paint (effect);
|
success = parent_class->pre_paint (effect, paint_context);
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -66,7 +67,8 @@ shell_glsl_effect_pre_paint (ClutterEffect *effect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_glsl_effect_paint_target (ClutterOffscreenEffect *effect)
|
shell_glsl_effect_paint_target (ClutterOffscreenEffect *effect,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
ShellGLSLEffect *self = SHELL_GLSL_EFFECT (effect);
|
ShellGLSLEffect *self = SHELL_GLSL_EFFECT (effect);
|
||||||
ShellGLSLEffectPrivate *priv;
|
ShellGLSLEffectPrivate *priv;
|
||||||
|
@ -76,7 +76,8 @@ G_DEFINE_TYPE (ShellInvertLightnessEffect,
|
|||||||
CLUTTER_TYPE_OFFSCREEN_EFFECT);
|
CLUTTER_TYPE_OFFSCREEN_EFFECT);
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
shell_invert_lightness_effect_pre_paint (ClutterEffect *effect)
|
shell_invert_lightness_effect_pre_paint (ClutterEffect *effect,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||||
ClutterEffectClass *parent_class;
|
ClutterEffectClass *parent_class;
|
||||||
@ -98,7 +99,7 @@ shell_invert_lightness_effect_pre_paint (ClutterEffect *effect)
|
|||||||
|
|
||||||
parent_class =
|
parent_class =
|
||||||
CLUTTER_EFFECT_CLASS (shell_invert_lightness_effect_parent_class);
|
CLUTTER_EFFECT_CLASS (shell_invert_lightness_effect_parent_class);
|
||||||
if (parent_class->pre_paint (effect))
|
if (parent_class->pre_paint (effect, paint_context))
|
||||||
{
|
{
|
||||||
ClutterOffscreenEffect *offscreen_effect =
|
ClutterOffscreenEffect *offscreen_effect =
|
||||||
CLUTTER_OFFSCREEN_EFFECT (effect);
|
CLUTTER_OFFSCREEN_EFFECT (effect);
|
||||||
@ -117,7 +118,8 @@ shell_invert_lightness_effect_pre_paint (ClutterEffect *effect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||||
ClutterActor *actor;
|
ClutterActor *actor;
|
||||||
|
@ -476,8 +476,9 @@ recorder_record_frame (ShellRecorder *recorder,
|
|||||||
* by clutter before glSwapBuffers() makes it visible to the user.
|
* by clutter before glSwapBuffers() makes it visible to the user.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
recorder_on_stage_paint (ClutterActor *actor,
|
recorder_on_stage_paint (ClutterActor *actor,
|
||||||
ShellRecorder *recorder)
|
ClutterPaintContext *paint_context,
|
||||||
|
ShellRecorder *recorder)
|
||||||
{
|
{
|
||||||
if (recorder->state == RECORDER_STATE_RECORDING)
|
if (recorder->state == RECORDER_STATE_RECORDING)
|
||||||
recorder_record_frame (recorder, FALSE);
|
recorder_record_frame (recorder, FALSE);
|
||||||
|
@ -45,6 +45,10 @@ typedef enum
|
|||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (ShellScreenshot, shell_screenshot, G_TYPE_OBJECT);
|
G_DEFINE_TYPE_WITH_PRIVATE (ShellScreenshot, shell_screenshot, G_TYPE_OBJECT);
|
||||||
|
|
||||||
|
static void
|
||||||
|
grab_screenshot (ClutterActor *stage,
|
||||||
|
GTask *result);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_screenshot_class_init (ShellScreenshotClass *screenshot_class)
|
shell_screenshot_class_init (ShellScreenshotClass *screenshot_class)
|
||||||
{
|
{
|
||||||
@ -263,6 +267,21 @@ draw_cursor_image (cairo_surface_t *surface,
|
|||||||
g_free (data);
|
g_free (data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context,
|
||||||
|
GTask *result)
|
||||||
|
{
|
||||||
|
grab_screenshot (actor, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_actors_painted (ClutterActor *actor,
|
||||||
|
GTask *result)
|
||||||
|
{
|
||||||
|
grab_screenshot (actor, result);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grab_screenshot (ClutterActor *stage,
|
grab_screenshot (ClutterActor *stage,
|
||||||
GTask *result)
|
GTask *result)
|
||||||
@ -325,7 +344,8 @@ grab_screenshot (ClutterActor *stage,
|
|||||||
if (priv->include_cursor)
|
if (priv->include_cursor)
|
||||||
draw_cursor_image (priv->image, priv->screenshot_area);
|
draw_cursor_image (priv->image, priv->screenshot_area);
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (stage, grab_screenshot, result);
|
g_signal_handlers_disconnect_by_func (stage, on_paint, result);
|
||||||
|
g_signal_handlers_disconnect_by_func (stage, on_actors_painted, result);
|
||||||
|
|
||||||
task = g_task_new (screenshot, NULL, on_screenshot_written, result);
|
task = g_task_new (screenshot, NULL, on_screenshot_written, result);
|
||||||
g_task_run_in_thread (task, write_screenshot_thread);
|
g_task_run_in_thread (task, write_screenshot_thread);
|
||||||
@ -460,7 +480,7 @@ shell_screenshot_screenshot (ShellScreenshot *screenshot,
|
|||||||
{
|
{
|
||||||
ClutterActor *stage;
|
ClutterActor *stage;
|
||||||
ShellScreenshotPrivate *priv = screenshot->priv;
|
ShellScreenshotPrivate *priv = screenshot->priv;
|
||||||
const char *paint_signal;
|
gboolean use_paint_signal = FALSE;
|
||||||
GTask *result;
|
GTask *result;
|
||||||
|
|
||||||
if (priv->stream != NULL) {
|
if (priv->stream != NULL) {
|
||||||
@ -483,7 +503,6 @@ shell_screenshot_screenshot (ShellScreenshot *screenshot,
|
|||||||
priv->include_cursor = FALSE;
|
priv->include_cursor = FALSE;
|
||||||
|
|
||||||
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
|
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
|
||||||
paint_signal = "actors-painted";
|
|
||||||
|
|
||||||
meta_disable_unredirect_for_display (shell_global_get_display (priv->global));
|
meta_disable_unredirect_for_display (shell_global_get_display (priv->global));
|
||||||
|
|
||||||
@ -492,10 +511,21 @@ shell_screenshot_screenshot (ShellScreenshot *screenshot,
|
|||||||
if (should_draw_cursor_image (SHELL_SCREENSHOT_SCREEN))
|
if (should_draw_cursor_image (SHELL_SCREENSHOT_SCREEN))
|
||||||
priv->include_cursor = TRUE;
|
priv->include_cursor = TRUE;
|
||||||
else
|
else
|
||||||
paint_signal = "paint";
|
use_paint_signal = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_signal_connect_after (stage, paint_signal, G_CALLBACK (grab_screenshot), result);
|
if (use_paint_signal)
|
||||||
|
{
|
||||||
|
g_signal_connect_after (stage, "paint",
|
||||||
|
G_CALLBACK (on_paint),
|
||||||
|
result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_signal_connect_after (stage, "actors-painted",
|
||||||
|
G_CALLBACK (on_actors_painted),
|
||||||
|
result);
|
||||||
|
}
|
||||||
|
|
||||||
clutter_actor_queue_redraw (stage);
|
clutter_actor_queue_redraw (stage);
|
||||||
}
|
}
|
||||||
|
@ -387,7 +387,8 @@ get_border_paint_offsets (StBoxLayout *self,
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_box_layout_paint (ClutterActor *actor)
|
st_box_layout_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StBoxLayout *self = ST_BOX_LAYOUT (actor);
|
StBoxLayout *self = ST_BOX_LAYOUT (actor);
|
||||||
StBoxLayoutPrivate *priv = self->priv;
|
StBoxLayoutPrivate *priv = self->priv;
|
||||||
@ -405,7 +406,7 @@ st_box_layout_paint (ClutterActor *actor)
|
|||||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
if (x != 0 || y != 0)
|
if (x != 0 || y != 0)
|
||||||
{
|
{
|
||||||
@ -436,14 +437,15 @@ st_box_layout_paint (ClutterActor *actor)
|
|||||||
for (child = clutter_actor_get_first_child (actor);
|
for (child = clutter_actor_get_first_child (actor);
|
||||||
child != NULL;
|
child != NULL;
|
||||||
child = clutter_actor_get_next_sibling (child))
|
child = clutter_actor_get_next_sibling (child))
|
||||||
clutter_actor_paint (child);
|
clutter_actor_paint (child, paint_context);
|
||||||
|
|
||||||
if (priv->hadjustment || priv->vadjustment)
|
if (priv->hadjustment || priv->vadjustment)
|
||||||
cogl_framebuffer_pop_clip (fb);
|
cogl_framebuffer_pop_clip (fb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_box_layout_pick (ClutterActor *actor)
|
st_box_layout_pick (ClutterActor *actor,
|
||||||
|
ClutterPickContext *pick_context)
|
||||||
{
|
{
|
||||||
StBoxLayout *self = ST_BOX_LAYOUT (actor);
|
StBoxLayout *self = ST_BOX_LAYOUT (actor);
|
||||||
StBoxLayoutPrivate *priv = self->priv;
|
StBoxLayoutPrivate *priv = self->priv;
|
||||||
@ -461,7 +463,7 @@ st_box_layout_pick (ClutterActor *actor)
|
|||||||
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
cogl_framebuffer_translate (fb, (int)x, (int)y, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor);
|
CLUTTER_ACTOR_CLASS (st_box_layout_parent_class)->pick (actor, pick_context);
|
||||||
|
|
||||||
if (x != 0 || y != 0)
|
if (x != 0 || y != 0)
|
||||||
{
|
{
|
||||||
@ -489,7 +491,7 @@ st_box_layout_pick (ClutterActor *actor)
|
|||||||
for (child = clutter_actor_get_first_child (actor);
|
for (child = clutter_actor_get_first_child (actor);
|
||||||
child != NULL;
|
child != NULL;
|
||||||
child = clutter_actor_get_next_sibling (child))
|
child = clutter_actor_get_next_sibling (child))
|
||||||
clutter_actor_pick (child);
|
clutter_actor_pick (child, pick_context);
|
||||||
|
|
||||||
if (priv->hadjustment || priv->vadjustment)
|
if (priv->hadjustment || priv->vadjustment)
|
||||||
cogl_framebuffer_pop_clip (fb);
|
cogl_framebuffer_pop_clip (fb);
|
||||||
|
@ -842,14 +842,15 @@ st_entry_leave_event (ClutterActor *actor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_entry_paint (ClutterActor *actor)
|
st_entry_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
|
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
|
||||||
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
|
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
|
||||||
StShadow *shadow_spec = st_theme_node_get_text_shadow (theme_node);
|
StShadow *shadow_spec = st_theme_node_get_text_shadow (theme_node);
|
||||||
ClutterActorClass *parent_class;
|
ClutterActorClass *parent_class;
|
||||||
|
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
if (shadow_spec)
|
if (shadow_spec)
|
||||||
{
|
{
|
||||||
@ -888,7 +889,7 @@ st_entry_paint (ClutterActor *actor)
|
|||||||
* This is needed as we still want to paint children.
|
* This is needed as we still want to paint children.
|
||||||
*/
|
*/
|
||||||
parent_class = g_type_class_peek_parent (st_entry_parent_class);
|
parent_class = g_type_class_peek_parent (st_entry_parent_class);
|
||||||
parent_class->paint (actor);
|
parent_class->paint (actor, paint_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -163,12 +163,13 @@ st_icon_dispose (GObject *gobject)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_icon_paint (ClutterActor *actor)
|
st_icon_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StIcon *icon = ST_ICON (actor);
|
StIcon *icon = ST_ICON (actor);
|
||||||
StIconPrivate *priv = icon->priv;
|
StIconPrivate *priv = icon->priv;
|
||||||
|
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
if (priv->icon_texture)
|
if (priv->icon_texture)
|
||||||
{
|
{
|
||||||
@ -186,7 +187,7 @@ st_icon_paint (ClutterActor *actor)
|
|||||||
clutter_actor_get_paint_opacity (priv->icon_texture));
|
clutter_actor_get_paint_opacity (priv->icon_texture));
|
||||||
}
|
}
|
||||||
|
|
||||||
clutter_actor_paint (priv->icon_texture);
|
clutter_actor_paint (priv->icon_texture, paint_context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,13 +191,14 @@ st_label_dispose (GObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_label_paint (ClutterActor *actor)
|
st_label_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StLabelPrivate *priv = ST_LABEL (actor)->priv;
|
StLabelPrivate *priv = ST_LABEL (actor)->priv;
|
||||||
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
|
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
|
||||||
StShadow *shadow_spec = st_theme_node_get_text_shadow (theme_node);
|
StShadow *shadow_spec = st_theme_node_get_text_shadow (theme_node);
|
||||||
|
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
if (shadow_spec)
|
if (shadow_spec)
|
||||||
{
|
{
|
||||||
@ -236,7 +237,7 @@ st_label_paint (ClutterActor *actor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clutter_actor_paint (priv->label);
|
clutter_actor_paint (priv->label, paint_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -432,6 +432,7 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
|
|||||||
CoglPipeline *shadow_pipeline = NULL;
|
CoglPipeline *shadow_pipeline = NULL;
|
||||||
float resource_scale;
|
float resource_scale;
|
||||||
float width, height;
|
float width, height;
|
||||||
|
ClutterPaintContext *paint_context;
|
||||||
|
|
||||||
g_return_val_if_fail (clutter_actor_has_allocation (actor), NULL);
|
g_return_val_if_fail (clutter_actor_has_allocation (actor), NULL);
|
||||||
|
|
||||||
@ -501,13 +502,17 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
|
|||||||
cogl_framebuffer_scale (fb, resource_scale, resource_scale, 1);
|
cogl_framebuffer_scale (fb, resource_scale, resource_scale, 1);
|
||||||
|
|
||||||
clutter_actor_set_opacity_override (actor, 255);
|
clutter_actor_set_opacity_override (actor, 255);
|
||||||
clutter_actor_paint (actor);
|
|
||||||
clutter_actor_set_opacity_override (actor, -1);
|
paint_context = clutter_paint_context_new_for_framebuffer (fb);
|
||||||
|
clutter_actor_paint (actor, paint_context);
|
||||||
|
clutter_paint_context_destroy (paint_context);
|
||||||
|
|
||||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
|
||||||
cogl_pop_framebuffer ();
|
cogl_pop_framebuffer ();
|
||||||
G_GNUC_END_IGNORE_DEPRECATIONS;
|
G_GNUC_END_IGNORE_DEPRECATIONS;
|
||||||
|
|
||||||
|
clutter_actor_set_opacity_override (actor, -1);
|
||||||
|
|
||||||
cogl_object_unref (fb);
|
cogl_object_unref (fb);
|
||||||
|
|
||||||
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, buffer,
|
shadow_pipeline = _st_create_shadow_pipeline (shadow_spec, buffer,
|
||||||
|
@ -85,7 +85,8 @@ st_scroll_view_fade_get_static_shader_source (ClutterShaderEffect *effect)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect)
|
st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StScrollViewFade *self = ST_SCROLL_VIEW_FADE (effect);
|
StScrollViewFade *self = ST_SCROLL_VIEW_FADE (effect);
|
||||||
ClutterShaderEffect *shader = CLUTTER_SHADER_EFFECT (effect);
|
ClutterShaderEffect *shader = CLUTTER_SHADER_EFFECT (effect);
|
||||||
@ -153,7 +154,7 @@ st_scroll_view_fade_paint_target (ClutterOffscreenEffect *effect)
|
|||||||
clutter_shader_effect_set_uniform (shader, "fade_area_bottomright", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_bottomright);
|
clutter_shader_effect_set_uniform (shader, "fade_area_bottomright", CLUTTER_TYPE_SHADER_FLOAT, 2, fade_area_bottomright);
|
||||||
|
|
||||||
parent = CLUTTER_OFFSCREEN_EFFECT_CLASS (st_scroll_view_fade_parent_class);
|
parent = CLUTTER_OFFSCREEN_EFFECT_CLASS (st_scroll_view_fade_parent_class);
|
||||||
parent->paint_target(effect);
|
parent->paint_target (effect, paint_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -276,34 +276,36 @@ st_scroll_view_dispose (GObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_scroll_view_paint (ClutterActor *actor)
|
st_scroll_view_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StScrollViewPrivate *priv = ST_SCROLL_VIEW (actor)->priv;
|
StScrollViewPrivate *priv = ST_SCROLL_VIEW (actor)->priv;
|
||||||
|
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
if (priv->child)
|
if (priv->child)
|
||||||
clutter_actor_paint (priv->child);
|
clutter_actor_paint (priv->child, paint_context);
|
||||||
if (priv->hscrollbar_visible)
|
if (priv->hscrollbar_visible)
|
||||||
clutter_actor_paint (priv->hscroll);
|
clutter_actor_paint (priv->hscroll, paint_context);
|
||||||
if (priv->vscrollbar_visible)
|
if (priv->vscrollbar_visible)
|
||||||
clutter_actor_paint (priv->vscroll);
|
clutter_actor_paint (priv->vscroll, paint_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_scroll_view_pick (ClutterActor *actor)
|
st_scroll_view_pick (ClutterActor *actor,
|
||||||
|
ClutterPickContext *pick_context)
|
||||||
{
|
{
|
||||||
StScrollViewPrivate *priv = ST_SCROLL_VIEW (actor)->priv;
|
StScrollViewPrivate *priv = ST_SCROLL_VIEW (actor)->priv;
|
||||||
|
|
||||||
/* Chain up so we get a bounding box pained (if we are reactive) */
|
/* Chain up so we get a bounding box pained (if we are reactive) */
|
||||||
CLUTTER_ACTOR_CLASS (st_scroll_view_parent_class)->pick (actor);
|
CLUTTER_ACTOR_CLASS (st_scroll_view_parent_class)->pick (actor, pick_context);
|
||||||
|
|
||||||
if (priv->child)
|
if (priv->child)
|
||||||
clutter_actor_pick (priv->child);
|
clutter_actor_pick (priv->child, pick_context);
|
||||||
if (priv->hscrollbar_visible)
|
if (priv->hscrollbar_visible)
|
||||||
clutter_actor_pick (priv->hscroll);
|
clutter_actor_pick (priv->hscroll, pick_context);
|
||||||
if (priv->vscrollbar_visible)
|
if (priv->vscrollbar_visible)
|
||||||
clutter_actor_pick (priv->vscroll);
|
clutter_actor_pick (priv->vscroll, pick_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -403,7 +403,8 @@ st_widget_allocate (ClutterActor *actor,
|
|||||||
* painting children.
|
* painting children.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
st_widget_paint_background (StWidget *widget)
|
st_widget_paint_background (StWidget *widget,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||||
CoglFramebuffer *framebuffer;
|
CoglFramebuffer *framebuffer;
|
||||||
@ -438,12 +439,13 @@ st_widget_paint_background (StWidget *widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_widget_paint (ClutterActor *actor)
|
st_widget_paint (ClutterActor *actor,
|
||||||
|
ClutterPaintContext *paint_context)
|
||||||
{
|
{
|
||||||
st_widget_paint_background (ST_WIDGET (actor));
|
st_widget_paint_background (ST_WIDGET (actor), paint_context);
|
||||||
|
|
||||||
/* Chain up so we paint children. */
|
/* Chain up so we paint children. */
|
||||||
CLUTTER_ACTOR_CLASS (st_widget_parent_class)->paint (actor);
|
CLUTTER_ACTOR_CLASS (st_widget_parent_class)->paint (actor, paint_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -133,7 +133,8 @@ StThemeNode * st_widget_get_theme_node (StWidget *widg
|
|||||||
StThemeNode * st_widget_peek_theme_node (StWidget *widget);
|
StThemeNode * st_widget_peek_theme_node (StWidget *widget);
|
||||||
|
|
||||||
GList * st_widget_get_focus_chain (StWidget *widget);
|
GList * st_widget_get_focus_chain (StWidget *widget);
|
||||||
void st_widget_paint_background (StWidget *widget);
|
void st_widget_paint_background (StWidget *widget,
|
||||||
|
ClutterPaintContext *paint_context);
|
||||||
gboolean st_widget_get_resource_scale (StWidget *widget,
|
gboolean st_widget_get_resource_scale (StWidget *widget,
|
||||||
float *resource_scale);
|
float *resource_scale);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user