mirror of
https://github.com/brl/mutter.git
synced 2025-02-27 02:04:09 +00:00
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)
|
if (iface->new_frame)
|
||||||
frame = iface->new_frame (frame_clock, frame_clock->listener.user_data);
|
frame = iface->new_frame (frame_clock, frame_clock->listener.user_data);
|
||||||
if (!frame)
|
if (!frame)
|
||||||
frame = clutter_frame_new (ClutterFrame);
|
frame = clutter_frame_new (ClutterFrame, NULL);
|
||||||
|
|
||||||
frame->frame_count = frame_count;
|
frame->frame_count = frame_count;
|
||||||
frame->has_target_presentation_time = frame_clock->is_next_presentation_time_valid;
|
frame->has_target_presentation_time = frame_clock->is_next_presentation_time_valid;
|
||||||
|
@ -20,9 +20,12 @@
|
|||||||
|
|
||||||
#include "clutter/clutter-frame.h"
|
#include "clutter/clutter-frame.h"
|
||||||
|
|
||||||
|
typedef void (* ClutterFrameRelease) (ClutterFrame *frame);
|
||||||
|
|
||||||
struct _ClutterFrame
|
struct _ClutterFrame
|
||||||
{
|
{
|
||||||
grefcount ref_count;
|
grefcount ref_count;
|
||||||
|
ClutterFrameRelease release;
|
||||||
|
|
||||||
int64_t frame_count;
|
int64_t frame_count;
|
||||||
|
|
||||||
@ -34,10 +37,11 @@ struct _ClutterFrame
|
|||||||
};
|
};
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
gpointer clutter_frame_new (size_t size);
|
gpointer clutter_frame_new (size_t size,
|
||||||
|
ClutterFrameRelease release);
|
||||||
|
|
||||||
#define clutter_frame_new(FrameType) \
|
#define clutter_frame_new(FrameType, release) \
|
||||||
((FrameType *) (clutter_frame_new (sizeof (FrameType))))
|
((FrameType *) (clutter_frame_new (sizeof (FrameType), release)))
|
||||||
|
|
||||||
ClutterFrameResult clutter_frame_get_result (ClutterFrame *frame);
|
ClutterFrameResult clutter_frame_get_result (ClutterFrame *frame);
|
||||||
|
|
||||||
|
@ -32,11 +32,16 @@ void
|
|||||||
clutter_frame_unref (ClutterFrame *frame)
|
clutter_frame_unref (ClutterFrame *frame)
|
||||||
{
|
{
|
||||||
if (g_ref_count_dec (&frame->ref_count))
|
if (g_ref_count_dec (&frame->ref_count))
|
||||||
|
{
|
||||||
|
if (frame->release)
|
||||||
|
frame->release (frame);
|
||||||
g_free (frame);
|
g_free (frame);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gpointer
|
gpointer
|
||||||
(clutter_frame_new) (size_t size)
|
(clutter_frame_new) (size_t size,
|
||||||
|
ClutterFrameRelease release)
|
||||||
{
|
{
|
||||||
ClutterFrame *frame;
|
ClutterFrame *frame;
|
||||||
|
|
||||||
@ -44,6 +49,7 @@ gpointer
|
|||||||
|
|
||||||
frame = g_malloc0 (size);
|
frame = g_malloc0 (size);
|
||||||
g_ref_count_init (&frame->ref_count);
|
g_ref_count_init (&frame->ref_count);
|
||||||
|
frame->release = release;
|
||||||
|
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,13 @@ struct _MetaFrameNative
|
|||||||
ClutterFrame base;
|
ClutterFrame base;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_frame_native_release (ClutterFrame *frame)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
MetaFrameNative *
|
MetaFrameNative *
|
||||||
meta_frame_native_new (void)
|
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