示例#1
0
/**
 * 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));
}
示例#2
0
/**
 * 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));
}
示例#3
0
/**
 * 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
}