c3aa4d24bf
This adds a new virtual to ClutterEffect which is intended to be a more flexible replacement for the pre and post_paint functions. The implementation of a run virtual would look something like this: void effect_run (ClutterEffect *effect, ClutterEffectRunFlags flags) { /* Set up state */ /* ... */ /* Chain to the next item in the paint sequence */ clutter_actor_continue_paint (priv->actor); /* Clean up state */ /* ... */ } ClutterActor now just calls this virtual instead of the pre_paint and post_paint functions. It keeps track of the next effect in the list so that it knows what to do when clutter_actor_continue_paint is called. clutter_actor_continue_paint is a new function added just for implementing effects. The default implementation of the run virtual just calls pre_paint and post_paint so that existing effects will continue to work. An effect is allowed to conditionally skip calling clutter_actor_continue_paint(). This is useful to implement effects that cache the image of an actor. The flags parameter can be used to determine if the actor is dirty since the last paint. ClutterActor sets this flag whenever propagated_one_redraw is TRUE which means that a redraw for this actor or one of its children was queued.
18 lines
698 B
C
18 lines
698 B
C
#ifndef __CLUTTER_EFFECT_PRIVATE_H__
|
|
#define __CLUTTER_EFFECT_PRIVATE_H__
|
|
|
|
#include <clutter/clutter-effect.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
gboolean _clutter_effect_pre_paint (ClutterEffect *effect);
|
|
void _clutter_effect_post_paint (ClutterEffect *effect);
|
|
gboolean _clutter_effect_get_paint_volume (ClutterEffect *effect,
|
|
ClutterPaintVolume *volume);
|
|
void _clutter_effect_run (ClutterEffect *effect,
|
|
ClutterEffectRunFlags flags);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __CLUTTER_EFFECT_PRIVATE_H__ */
|