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);
}
Beispiel #6
0
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;
}