1919
2020#include "config.h"
2121
22+ #include "compositor/meta-later-private.h"
23+
2224#include "cogl/cogl.h"
23- #include "meta/util.h"
25+ #include "compositor/compositor-private.h"
26+ #include "core/display-private.h"
27+ #include "meta/meta-later.h"
2428
2529typedef struct _MetaLater
2630{
@@ -36,8 +40,6 @@ typedef struct _MetaLater
3640 gboolean run_once ;
3741} MetaLater ;
3842
39- typedef struct _MetaLaters MetaLaters ;
40-
4143#define META_LATER_N_TYPES (META_LATER_IDLE + 1)
4244
4345struct _MetaLaters
@@ -50,8 +52,6 @@ struct _MetaLaters
5052 guint repaint_func ;
5153};
5254
53- static MetaLaters _laters ;
54-
5555static MetaLater *
5656meta_later_ref (MetaLater * later )
5757{
@@ -292,7 +292,11 @@ meta_later_add (MetaLaterType when,
292292 gpointer data ,
293293 GDestroyNotify notify )
294294{
295- return meta_laters_add (& _laters , when , func , data , notify );
295+ MetaDisplay * display = meta_get_display ();
296+ MetaCompositor * compositor = display -> compositor ;
297+
298+ return meta_laters_add (meta_compositor_get_laters (compositor ),
299+ when , func , data , notify );
296300}
297301
298302static void
@@ -317,5 +321,31 @@ meta_laters_remove (MetaLaters *laters,
317321void
318322meta_later_remove (unsigned int later_id )
319323{
320- meta_laters_remove (& _laters , later_id );
324+ MetaDisplay * display = meta_get_display ();
325+ MetaCompositor * compositor = display -> compositor ;
326+
327+ if (!compositor )
328+ return ;
329+
330+ meta_laters_remove (meta_compositor_get_laters (compositor ), later_id );
331+ }
332+
333+ MetaLaters *
334+ meta_laters_new (void )
335+ {
336+ return g_new0 (MetaLaters , 1 );
337+ }
338+
339+ void
340+ meta_laters_free (MetaLaters * laters )
341+ {
342+ unsigned int i ;
343+
344+ for (i = 0 ; i < G_N_ELEMENTS (laters -> laters ); i ++ )
345+ g_slist_free_full (laters -> laters [i ], (GDestroyNotify ) meta_later_unref );
346+
347+ g_clear_object (& laters -> timeline );
348+ if (laters -> repaint_func )
349+ clutter_threads_remove_repaint_func (laters -> repaint_func );
350+ g_free (laters );
321351}
0 commit comments