static void byzanz_session_constructed (GObject *object) { ByzanzSession *session = BYZANZ_SESSION (object); GOutputStream *stream; session->recorder = byzanz_recorder_new (session->window, &session->area); g_signal_connect (session->recorder, "notify::recording", G_CALLBACK (byzanz_session_recorder_notify_cb), session); g_signal_connect (session->recorder, "image", G_CALLBACK (byzanz_session_recorder_image_cb), session); /* FIXME: make async */ stream = G_OUTPUT_STREAM (g_file_replace (session->file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, session->cancellable, &session->error)); if (stream != NULL) { session->encoder = byzanz_encoder_new (session->encoder_type, byzanz_queue_get_input_stream (session->queue), stream, session->record_audio, session->cancellable); g_signal_connect (session->encoder, "notify", G_CALLBACK (byzanz_session_encoder_notify_cb), session); g_object_unref (stream); if (byzanz_encoder_get_error (session->encoder)) byzanz_session_set_error (session, byzanz_encoder_get_error (session->encoder)); } byzanz_serialize_header (byzanz_queue_get_output_stream (session->queue), session->area.width, session->area.height, session->cancellable, &session->error); if (G_OBJECT_CLASS (byzanz_session_parent_class)->constructed) G_OBJECT_CLASS (byzanz_session_parent_class)->constructed (object); }
int main (int argc, char **argv) { GOptionContext* context; GError *error = NULL; GFile *infile; GFile *outfile; GInputStream *instream; GOutputStream *outstream; GMainLoop *loop; ByzanzEncoder *encoder; g_set_prgname (argv[0]); #ifdef GETTEXT_PACKAGE bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif context = g_option_context_new (_("process a Byzanz debug recording")); #ifdef GETTEXT_PACKAGE g_option_context_set_translation_domain(context, GETTEXT_PACKAGE); #endif g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print (_("Wrong option: %s\n"), error->message); usage (); g_error_free (error); return 1; } if (argc != 3) { usage (); return 0; } infile = g_file_new_for_commandline_arg (argv[1]); outfile = g_file_new_for_commandline_arg (argv[2]); loop = g_main_loop_new (NULL, FALSE); instream = G_INPUT_STREAM (g_file_read (infile, NULL, &error)); if (instream == NULL) { g_print ("%s\n", error->message); g_error_free (error); return 1; } outstream = G_OUTPUT_STREAM (g_file_replace (outfile, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, &error)); if (outstream == NULL) { g_print ("%s\n", error->message); g_error_free (error); return 1; } encoder = byzanz_encoder_new (byzanz_encoder_get_type_from_file (outfile), instream, outstream, FALSE, NULL); g_signal_connect (encoder, "notify", G_CALLBACK (encoder_notify), loop); g_main_loop_run (loop); g_main_loop_unref (loop); g_object_unref (encoder); g_object_unref (instream); g_object_unref (outstream); g_object_unref (infile); g_object_unref (outfile); return 0; }