static void recorder_set_framerate (ShellRecorder *recorder, int framerate) { if (framerate == recorder->framerate) return; if (recorder->current_pipeline) shell_recorder_close (recorder); recorder->framerate = framerate; g_object_notify (G_OBJECT (recorder), "framerate"); }
static void recorder_set_file_template (ShellRecorder *recorder, const char *file_template) { if (file_template == recorder->file_template || (file_template && recorder->file_template && strcmp (recorder->file_template, file_template) == 0)) return; if (recorder->current_pipeline) shell_recorder_close (recorder); if (recorder->file_template) g_free (recorder->file_template); recorder->file_template = g_strdup (file_template); g_object_notify (G_OBJECT (recorder), "file-template"); }
static void recorder_set_pipeline (ShellRecorder *recorder, const char *pipeline) { if (pipeline == recorder->pipeline_description || (pipeline && recorder->pipeline_description && strcmp (recorder->pipeline_description, pipeline) == 0)) return; if (recorder->current_pipeline) shell_recorder_close (recorder); if (recorder->pipeline_description) g_free (recorder->pipeline_description); recorder->pipeline_description = g_strdup (pipeline); g_object_notify (G_OBJECT (recorder), "pipeline"); }
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; if (recorder->stage) recorder_update_size (recorder); }
/* Clean up when the pipeline is finished */ static void recorder_pipeline_closed (RecorderPipeline *pipeline) { g_signal_handlers_disconnect_by_func (pipeline->src, (gpointer) recorder_pipeline_on_memory_used_changed, pipeline); recorder_disconnect_stage_callbacks (pipeline->recorder); gst_element_set_state (pipeline->pipeline, GST_STATE_NULL); if (pipeline->recorder) { GtkRecentManager *recent_manager; GFile *file; char *uri; ShellRecorder *recorder = pipeline->recorder; if (pipeline == recorder->current_pipeline) { /* Error case; force a close */ recorder->current_pipeline = NULL; shell_recorder_close (recorder); } recent_manager = gtk_recent_manager_get_default (); file = g_file_new_for_path (pipeline->filename); uri = g_file_get_uri (file); gtk_recent_manager_add_item (recent_manager, uri); g_free (uri); g_object_unref (file); recorder->pipelines = g_slist_remove (recorder->pipelines, pipeline); } recorder_pipeline_free (pipeline); }
static gboolean stop_recording_timeout (ClutterActor *stage) { if (recorder) { shell_recorder_close (recorder); /* quit when the recorder finishes closing */ g_object_weak_ref (G_OBJECT (recorder), (GWeakNotify) clutter_actor_destroy, stage); g_object_unref (recorder); } else { clutter_actor_destroy (stage); } return FALSE; }
static gboolean stop_recording_timeout (gpointer data) { shell_recorder_close (recorder); return FALSE; }