recorder: Disconnect stage signals when not recording
This causes unnecessary work, so only connect them when needed i.e while recording. https://bugzilla.gnome.org/show_bug.cgi?id=695650
This commit is contained in:
parent
209014b083
commit
07de96ede9
@ -852,16 +852,22 @@ recorder_remove_update_pointer_timeout (ShellRecorder *recorder)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
recorder_set_stage (ShellRecorder *recorder,
|
recorder_connect_stage_callbacks (ShellRecorder *recorder)
|
||||||
ClutterStage *stage)
|
|
||||||
{
|
{
|
||||||
if (recorder->stage == stage)
|
g_signal_connect (recorder->stage, "destroy",
|
||||||
return;
|
G_CALLBACK (recorder_on_stage_destroy), recorder);
|
||||||
|
g_signal_connect_after (recorder->stage, "paint",
|
||||||
|
G_CALLBACK (recorder_on_stage_paint), recorder);
|
||||||
|
g_signal_connect (recorder->stage, "notify::width",
|
||||||
|
G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
||||||
|
g_signal_connect (recorder->stage, "notify::width",
|
||||||
|
G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
||||||
|
|
||||||
if (recorder->current_pipeline)
|
clutter_x11_add_filter (recorder_event_filter, recorder);
|
||||||
shell_recorder_close (recorder);
|
}
|
||||||
|
|
||||||
if (recorder->stage)
|
static void
|
||||||
|
recorder_disconnect_stage_callbacks (ShellRecorder *recorder)
|
||||||
{
|
{
|
||||||
g_signal_handlers_disconnect_by_func (recorder->stage,
|
g_signal_handlers_disconnect_by_func (recorder->stage,
|
||||||
(void *)recorder_on_stage_destroy,
|
(void *)recorder_on_stage_destroy,
|
||||||
@ -887,6 +893,19 @@ recorder_set_stage (ShellRecorder *recorder,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
recorder_set_stage (ShellRecorder *recorder,
|
||||||
|
ClutterStage *stage)
|
||||||
|
{
|
||||||
|
if (recorder->stage == stage)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (recorder->current_pipeline)
|
||||||
|
shell_recorder_close (recorder);
|
||||||
|
|
||||||
|
if (recorder->stage)
|
||||||
|
recorder_disconnect_stage_callbacks (recorder);
|
||||||
|
|
||||||
recorder->stage = stage;
|
recorder->stage = stage;
|
||||||
|
|
||||||
if (recorder->stage)
|
if (recorder->stage)
|
||||||
@ -895,16 +914,6 @@ recorder_set_stage (ShellRecorder *recorder,
|
|||||||
int major = 2, minor = 3;
|
int major = 2, minor = 3;
|
||||||
|
|
||||||
recorder->stage = stage;
|
recorder->stage = stage;
|
||||||
g_signal_connect (recorder->stage, "destroy",
|
|
||||||
G_CALLBACK (recorder_on_stage_destroy), recorder);
|
|
||||||
g_signal_connect_after (recorder->stage, "paint",
|
|
||||||
G_CALLBACK (recorder_on_stage_paint), recorder);
|
|
||||||
g_signal_connect (recorder->stage, "notify::width",
|
|
||||||
G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
|
||||||
g_signal_connect (recorder->stage, "notify::width",
|
|
||||||
G_CALLBACK (recorder_on_stage_notify_size), recorder);
|
|
||||||
|
|
||||||
clutter_x11_add_filter (recorder_event_filter, recorder);
|
|
||||||
|
|
||||||
recorder_update_size (recorder);
|
recorder_update_size (recorder);
|
||||||
|
|
||||||
@ -1461,6 +1470,8 @@ recorder_pipeline_closed (RecorderPipeline *pipeline)
|
|||||||
(gpointer) recorder_pipeline_on_memory_used_changed,
|
(gpointer) recorder_pipeline_on_memory_used_changed,
|
||||||
pipeline);
|
pipeline);
|
||||||
|
|
||||||
|
recorder_disconnect_stage_callbacks (pipeline->recorder);
|
||||||
|
|
||||||
gst_element_set_state (pipeline->pipeline, GST_STATE_NULL);
|
gst_element_set_state (pipeline->pipeline, GST_STATE_NULL);
|
||||||
|
|
||||||
if (pipeline->recorder)
|
if (pipeline->recorder)
|
||||||
@ -1722,6 +1733,8 @@ shell_recorder_record (ShellRecorder *recorder)
|
|||||||
if (!recorder_open_pipeline (recorder))
|
if (!recorder_open_pipeline (recorder))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
recorder_connect_stage_callbacks (recorder);
|
||||||
|
|
||||||
recorder->start_time = get_wall_time();
|
recorder->start_time = get_wall_time();
|
||||||
recorder->last_frame_time = 0;
|
recorder->last_frame_time = 0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user