clutter: Add va_marshallers for stage signals
Adds va_marshallers to the ClutterStage signals. This allows for better stack traces to be retrieved when profiling. Additionally, since the generic marshaller was using GBoxedCopy/GBoxedFree functions for the GValue usage, the previous code was acquiring a global reader/writer lock in GObject via g_boxed_free() usage. With G_SIGNAL_TYPE_STATIC_SCOPE, the generated marshallers can avoid the additional copy/free on the instance. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3204>
This commit is contained in:
parent
234358ec38
commit
150a9e35ad
@ -18,6 +18,8 @@ VOID:INT,INT
|
|||||||
VOID:INT,POINTER
|
VOID:INT,POINTER
|
||||||
VOID:FLOAT,FLOAT
|
VOID:FLOAT,FLOAT
|
||||||
VOID:INT,INT,INT,INT
|
VOID:INT,INT,INT,INT
|
||||||
|
VOID:OBJECT,BOXED
|
||||||
|
VOID:OBJECT,BOXED,BOXED
|
||||||
VOID:OBJECT,FLAGS
|
VOID:OBJECT,FLAGS
|
||||||
VOID:OBJECT,FLAGS,BOOLEAN
|
VOID:OBJECT,FLAGS,BOOLEAN
|
||||||
VOID:OBJECT,FLAGS,UINT
|
VOID:OBJECT,FLAGS,UINT
|
||||||
|
@ -1471,10 +1471,15 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[BEFORE_UPDATE],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::prepare-frame:
|
* ClutterStage::prepare-frame:
|
||||||
* @stage: the stage that received the event
|
* @stage: the stage that received the event
|
||||||
@ -1489,10 +1494,14 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[PREPARE_FRAME],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::before-paint:
|
* ClutterStage::before-paint:
|
||||||
@ -1507,10 +1516,15 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (ClutterStageClass, before_paint),
|
G_STRUCT_OFFSET (ClutterStageClass, before_paint),
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[BEFORE_PAINT],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::after-paint:
|
* ClutterStage::after-paint:
|
||||||
* @stage: the stage that received the event
|
* @stage: the stage that received the event
|
||||||
@ -1525,10 +1539,14 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0, /* no corresponding vfunc */
|
0, /* no corresponding vfunc */
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[AFTER_PAINT],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::after-update:
|
* ClutterStage::after-update:
|
||||||
@ -1541,10 +1559,14 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[AFTER_UPDATE],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::paint-view:
|
* ClutterStage::paint-view:
|
||||||
@ -1565,11 +1587,15 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
G_STRUCT_OFFSET (ClutterStageClass, paint_view),
|
G_STRUCT_OFFSET (ClutterStageClass, paint_view),
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED_BOXED,
|
||||||
G_TYPE_NONE, 3,
|
G_TYPE_NONE, 3,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
CAIRO_GOBJECT_TYPE_REGION,
|
CAIRO_GOBJECT_TYPE_REGION | G_SIGNAL_TYPE_STATIC_SCOPE,
|
||||||
CLUTTER_TYPE_FRAME);
|
CLUTTER_TYPE_FRAME | G_SIGNAL_TYPE_STATIC_SCOPE);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[PAINT_VIEW],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_BOXED_BOXEDv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::presented: (skip)
|
* ClutterStage::presented: (skip)
|
||||||
@ -1584,10 +1610,14 @@ clutter_stage_class_init (ClutterStageClass *klass)
|
|||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST,
|
G_SIGNAL_RUN_LAST,
|
||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL,
|
||||||
|
_clutter_marshal_VOID__OBJECT_POINTER,
|
||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_STAGE_VIEW,
|
CLUTTER_TYPE_STAGE_VIEW,
|
||||||
G_TYPE_POINTER);
|
G_TYPE_POINTER);
|
||||||
|
g_signal_set_va_marshaller (stage_signals[PRESENTED],
|
||||||
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
|
_clutter_marshal_VOID__OBJECT_POINTERv);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterStage::gl-video-memory-purged: (skip)
|
* ClutterStage::gl-video-memory-purged: (skip)
|
||||||
|
Loading…
Reference in New Issue
Block a user