Re: Widgets and GThreads.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There is a function in glib called g_idle_add which makes it so the
function will be called in the main loop, avoiding locking problems.
What I typically do is wrap functions like I've shown below so you
basically call thread_button_set_label instead of gtk_button_set_label
and everything works out. The code below basically takes the data,
sticks it into the pointer that g_idle_add needs, and sends it through
to be processed. I haven't tested the code but I think it's all correct.

- Brian


typedef struct
{
	GtkButton *button;
	gchar *label;
} ButtonData;

void thread_button_set_label_BD (ButtonData *data)
{
	gtk_button_set_label (data->button, data->label);
	g_free (data->label);
	g_free (data);
}
void thread_button_set_label (GtkButton *button, gchar *label)
{
	ButtonData *data = g_alloc (sizeof (ButtonData));
	data->button = button;
	data->label = g_strdup( label );
	g_idle_add (thread_button_set_label_BD, data);
}

_______________________________________________

gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux