mirror of
https://github.com/brl/mutter.git
synced 2024-11-29 19:40:43 -05:00
Fix clutter_redraw() to match the redraw cycle
The clutter_redraw() function is used by embedding toolkits to force a redraw on a stage. Since everything is performed by toggling a flag inside the Stage itself and then letting the master clock advance, we need a ClutterStage method to ensure that we start the master clock and redraw.
This commit is contained in:
parent
7099d251c6
commit
e1cac4fece
@ -236,18 +236,9 @@ _clutter_do_redraw (ClutterStage *stage)
|
|||||||
void
|
void
|
||||||
clutter_redraw (ClutterStage *stage)
|
clutter_redraw (ClutterStage *stage)
|
||||||
{
|
{
|
||||||
ClutterMasterClock *master_clock;
|
g_return_if_fail (CLUTTER_IS_STAGE (stage));
|
||||||
|
|
||||||
/* we need to do this because the clutter_redraw() might be called by
|
clutter_stage_ensure_redraw (stage);
|
||||||
* clutter-gtk, and this will not cause the master clock to advance nor
|
|
||||||
* the repaint functions to be run
|
|
||||||
*/
|
|
||||||
master_clock = _clutter_master_clock_get_default ();
|
|
||||||
_clutter_master_clock_advance (master_clock);
|
|
||||||
|
|
||||||
_clutter_run_repaint_functions ();
|
|
||||||
|
|
||||||
_clutter_do_redraw (stage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1946,6 +1946,33 @@ clutter_stage_ensure_viewport (ClutterStage *stage)
|
|||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_stage_ensure_redraw:
|
||||||
|
* @stage: a #ClutterStage
|
||||||
|
*
|
||||||
|
* Ensures that @stage is redrawn
|
||||||
|
*
|
||||||
|
* This function should not be called by applications: it is
|
||||||
|
* used when embedding a #ClutterStage into a toolkit with
|
||||||
|
* another windowing system, like GTK+.
|
||||||
|
*
|
||||||
|
* Since: 1.0
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_stage_ensure_redraw (ClutterStage *stage)
|
||||||
|
{
|
||||||
|
ClutterMasterClock *master_clock;
|
||||||
|
ClutterStagePrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_STAGE (stage));
|
||||||
|
|
||||||
|
priv = stage->priv;
|
||||||
|
priv->redraw_pending = TRUE;
|
||||||
|
|
||||||
|
master_clock = _clutter_master_clock_get_default ();
|
||||||
|
_clutter_master_clock_start_running (master_clock);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_stage_queue_redraw:
|
* clutter_stage_queue_redraw:
|
||||||
* @stage: the #ClutterStage
|
* @stage: the #ClutterStage
|
||||||
|
@ -243,6 +243,7 @@ void clutter_stage_ensure_current (ClutterStage *stage);
|
|||||||
void clutter_stage_queue_redraw (ClutterStage *stage);
|
void clutter_stage_queue_redraw (ClutterStage *stage);
|
||||||
gboolean clutter_stage_is_default (ClutterStage *stage);
|
gboolean clutter_stage_is_default (ClutterStage *stage);
|
||||||
void clutter_stage_ensure_viewport (ClutterStage *stage);
|
void clutter_stage_ensure_viewport (ClutterStage *stage);
|
||||||
|
void clutter_stage_ensure_redraw (ClutterStage *stage);
|
||||||
|
|
||||||
/* Commodity macro */
|
/* Commodity macro */
|
||||||
#define clutter_stage_add(stage,actor) G_STMT_START { \
|
#define clutter_stage_add(stage,actor) G_STMT_START { \
|
||||||
|
@ -485,6 +485,7 @@ ClutterPickMode
|
|||||||
clutter_stage_get_actor_at_pos
|
clutter_stage_get_actor_at_pos
|
||||||
clutter_stage_ensure_current
|
clutter_stage_ensure_current
|
||||||
clutter_stage_ensure_viewport
|
clutter_stage_ensure_viewport
|
||||||
|
clutter_stage_ensure_redraw
|
||||||
clutter_stage_queue_redraw
|
clutter_stage_queue_redraw
|
||||||
clutter_stage_event
|
clutter_stage_event
|
||||||
clutter_stage_set_key_focus
|
clutter_stage_set_key_focus
|
||||||
|
Loading…
Reference in New Issue
Block a user