clutter/frame: Allow setting a backend release function
The one set by the native backend is empty, but it will be used later. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2855>
This commit is contained in:
parent
7b634df379
commit
135ed27d27
@ -735,7 +735,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
||||
if (iface->new_frame)
|
||||
frame = iface->new_frame (frame_clock, frame_clock->listener.user_data);
|
||||
if (!frame)
|
||||
frame = clutter_frame_new (ClutterFrame);
|
||||
frame = clutter_frame_new (ClutterFrame, NULL);
|
||||
|
||||
frame->frame_count = frame_count;
|
||||
frame->has_target_presentation_time = frame_clock->is_next_presentation_time_valid;
|
||||
|
@ -20,9 +20,12 @@
|
||||
|
||||
#include "clutter/clutter-frame.h"
|
||||
|
||||
typedef void (* ClutterFrameRelease) (ClutterFrame *frame);
|
||||
|
||||
struct _ClutterFrame
|
||||
{
|
||||
grefcount ref_count;
|
||||
ClutterFrameRelease release;
|
||||
|
||||
int64_t frame_count;
|
||||
|
||||
@ -34,10 +37,11 @@ struct _ClutterFrame
|
||||
};
|
||||
|
||||
CLUTTER_EXPORT
|
||||
gpointer clutter_frame_new (size_t size);
|
||||
gpointer clutter_frame_new (size_t size,
|
||||
ClutterFrameRelease release);
|
||||
|
||||
#define clutter_frame_new(FrameType) \
|
||||
((FrameType *) (clutter_frame_new (sizeof (FrameType))))
|
||||
#define clutter_frame_new(FrameType, release) \
|
||||
((FrameType *) (clutter_frame_new (sizeof (FrameType), release)))
|
||||
|
||||
ClutterFrameResult clutter_frame_get_result (ClutterFrame *frame);
|
||||
|
||||
|
@ -32,11 +32,16 @@ void
|
||||
clutter_frame_unref (ClutterFrame *frame)
|
||||
{
|
||||
if (g_ref_count_dec (&frame->ref_count))
|
||||
g_free (frame);
|
||||
{
|
||||
if (frame->release)
|
||||
frame->release (frame);
|
||||
g_free (frame);
|
||||
}
|
||||
}
|
||||
|
||||
gpointer
|
||||
(clutter_frame_new) (size_t size)
|
||||
(clutter_frame_new) (size_t size,
|
||||
ClutterFrameRelease release)
|
||||
{
|
||||
ClutterFrame *frame;
|
||||
|
||||
@ -44,6 +49,7 @@ gpointer
|
||||
|
||||
frame = g_malloc0 (size);
|
||||
g_ref_count_init (&frame->ref_count);
|
||||
frame->release = release;
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
@ -28,8 +28,13 @@ struct _MetaFrameNative
|
||||
ClutterFrame base;
|
||||
};
|
||||
|
||||
static void
|
||||
meta_frame_native_release (ClutterFrame *frame)
|
||||
{
|
||||
}
|
||||
|
||||
MetaFrameNative *
|
||||
meta_frame_native_new (void)
|
||||
{
|
||||
return clutter_frame_new (MetaFrameNative);
|
||||
return clutter_frame_new (MetaFrameNative, meta_frame_native_release);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user