Brian J. Tarricone wrote:
> Michael McCann wrote:
>   
>> Brian J. Tarricone wrote:
>>     
>>> Don't use gdk in the CPU-intensive function:
>>>       
>> Unfortunately, the GDK calls _are_ what is CPU-intensive. I believe the 
>> gdk_pixbuf_get_from_drawable() call is the most intensive. None of my 
>> "regular" code is CPU-intensive.
>>     
>
> How large is the GdkDrawable?

It's the size of the entire screen: 1024x768
>   I wouldn't imagine that to eat too much 
> CPU.  You can try only acquiring the gdk lock in your thread when 
> absolutely necessary to see if that helps, like this:
>
> do_something_without_gdk();
> gdk_threads_enter();
> gdk_pixbuf_get_from_drawable();
> gdk_threads_leave();
> do_other_stuff_without_gdk();
> gdk_threads_enter();
> do_some_stuff_with_the_gdk_drawable();
> gdk_threads_leave();
> ...
>   

Yes, I've already tried that, to no avail. My code basically only 
consists of:

gdk_screen_get_default(): Get the default screen
gdk_screen_get_root_window(): Get the root window 
gdk_pixbuf_get_from_drawable(): Get a pixbuf from the entire screen
gdk_pixbuf_save_to_bufferv(): Save the pixbuf to a buffer.

Remove all of the GDK calls, and there is no UI freeze. I can even throw in an 
infinite loop to any function in the non-UI thread, and the UI does not freeze, 
which is to be expected.



_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to