/** * ppg_edit_channel_task_class_init: * @klass: (in): A #PpgEditChannelTaskClass. * * Initializes the #PpgEditChannelTaskClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void ppg_edit_channel_task_class_init (PpgEditChannelTaskClass *klass) { GObjectClass *object_class; PpgTaskClass *task_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = ppg_edit_channel_task_finalize; object_class->set_property = ppg_edit_channel_task_set_property; g_type_class_add_private(object_class, sizeof(PpgEditChannelTaskPrivate)); task_class = PPG_TASK_CLASS(klass); task_class->run = ppg_edit_channel_task_run; g_object_class_install_property(object_class, PROP_TARGET, g_param_spec_string("target", "target", "target", NULL, G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_WORKING_DIR, g_param_spec_string("working-dir", "working-dir", "working-dir", NULL, G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_ARGS, g_param_spec_boxed("args", "args", "args", G_TYPE_STRV, G_PARAM_WRITABLE)); g_object_class_install_property(object_class, PROP_ENV, g_param_spec_boxed("env", "env", "env", G_TYPE_STRV, G_PARAM_WRITABLE)); }
/** * ppg_restart_task_class_init: * @klass: (in): A #PpgRestartTaskClass. * * Initializes the #PpgRestartTaskClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void ppg_restart_task_class_init (PpgRestartTaskClass *klass) { GObjectClass *object_class; PpgTaskClass *task_class; object_class = G_OBJECT_CLASS(klass); object_class->finalize = ppg_restart_task_finalize; object_class->set_property = ppg_restart_task_set_property; g_type_class_add_private(object_class, sizeof(PpgRestartTaskPrivate)); task_class = PPG_TASK_CLASS(klass); task_class->run = ppg_restart_task_run; g_object_class_install_property(object_class, PROP_SESSION, g_param_spec_object("session", "session", "session", PPG_TYPE_SESSION, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); }
/** * ppg_task_render_class_init: * @klass: (in): A #PpgTaskRenderClass. * * Initializes the #PpgTaskRenderClass and prepares the vtable. * * Returns: None. * Side effects: None. */ static void ppg_task_render_class_init (PpgTaskRenderClass *klass) { GObjectClass *object_class; PpgTaskClass *task_class; #if MAX_THREADS > 1 guint n_threads; gint i; #endif object_class = G_OBJECT_CLASS(klass); object_class->finalize = ppg_task_render_finalize; object_class->get_property = ppg_task_render_get_property; object_class->set_property = ppg_task_render_set_property; g_type_class_add_private(object_class, sizeof(PpgTaskRenderPrivate)); task_class = PPG_TASK_CLASS(klass); task_class->run = ppg_task_render_run; task_class->schedule = ppg_task_render_schedule; g_object_class_install_property(object_class, PROP_BEGIN_TIME, g_param_spec_double("begin-time", "begin-time", "begin-time", 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE)); g_object_class_install_property(object_class, PROP_END_TIME, g_param_spec_double("end-time", "end-time", "end-time", 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE)); g_object_class_install_property(object_class, PROP_X, g_param_spec_double("x", "x", "x", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property(object_class, PROP_Y, g_param_spec_double("y", "y", "y", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property(object_class, PROP_WIDTH, g_param_spec_double("width", "width", "width", 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property(object_class, PROP_HEIGHT, g_param_spec_double("height", "height", "height", 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property(object_class, PROP_SEQUENCE, g_param_spec_int("sequence", "sequence", "sequence", 0, G_MAXINT, 0, G_PARAM_READABLE)); /** * PpgTaskRender:surface: * @surface: A #cairo_surface_t. * * The surface to render upon. Since pixman is not thread safe in reference * counting, this property is a pointer type. The reference count of the * surface is not changed. It is expected that the caller set the reference * explicitly and free it from the same thread they referenced it from * when the task has completed. */ g_object_class_install_property(object_class, PROP_SURFACE, g_param_spec_pointer("surface", "Surface", "The cairo surface", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); signals[RENDER] = g_signal_new("render", PPG_TYPE_TASK_RENDER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(PpgTaskRenderClass, render), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); task_queue = g_async_queue_new(); #if MAX_THREADS > 1 /* * Create rendering threads if we are not using the main loop for * rendering. */ n_threads = MIN(ppg_get_num_cpus(), MAX_THREADS); for (i = 0; i < n_threads; i++) { task_threads[i] = g_thread_create(ppg_task_render_thread, task_queue, TRUE, NULL); } #endif }