Re: Deadlock/Freeze

2009-10-29 Thread Michael Torrie
Matteo Landi wrote:
 From the FAQ entry [1] it seems I need to enter/leave threads inside each
 timeout callback. Could the procedure described be a valid solution
 for my problem?

Yes I believe you need to call enter/leave around calls to any gtk or
gdk call inside the callback.

You might also consider the g_idle_add pattern and have threads use this
mechanisms to run callbacks in the main GUI thread, avoiding the locking
issues entirely and also making your program more cross-platform.

http://irrepupavel.com/documents/gtk/gtk_threads.html explains this
pattern somewhat.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: Deadlock/Freeze

2009-10-29 Thread Michael Torrie
Michael Torrie wrote:
 Matteo Landi wrote:
 From the FAQ entry [1] it seems I need to enter/leave threads inside each
 timeout callback. Could the procedure described be a valid solution
 for my problem?
 
 Yes I believe you need to call enter/leave around calls to any gtk or
 gdk call inside the callback.

Not sure if this has to be done in the main thread or just the
callbacks, though...
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: Deadlock/Freeze

2009-10-29 Thread Matteo Landi
It is sad to say, but the issue described above, seemed to be generated by
an human dumb error (as always).

I have set two refresh times: one in the case of full connectivity
(about an hour), and the other, smaller (1 minute), in the case of
lack of communication. In order
to implement this i did:

def callback():
  data = parse()
  if not data:
gobject.timeout_add(1m, callback)
  else:
   gobject.timeout_add(1h, callback)
  return True

As you can notice by yourselves, I forgotten to remove the return
True, so it ended
not in a so called deadlock, but in a sort of dos, because of the
amount of thenumber
of callbacks being wainiting in the main loop.

So I changed return True, with a return False, and it seems to work
properly (at least for the testing till now : ).

Now it lasts the question about placing a threads_enter/leave in each
callback. Is
this really needed? I think that when the gstreamer threads wants to
write on the screen, it insert an expose event from the main_loop, so
the whole drawing is right
handled from the main loop. These are just suppositions.


On Thu, Oct 29, 2009 at 7:08 PM, Michael Torrie torr...@gmail.com wrote:
 Michael Torrie wrote:
 Matteo Landi wrote:
 From the FAQ entry [1] it seems I need to enter/leave threads inside each
 timeout callback. Could the procedure described be a valid solution
 for my problem?

 Yes I believe you need to call enter/leave around calls to any gtk or
 gdk call inside the callback.

 Not sure if this has to be done in the main thread or just the
 callbacks, though...
 ___
 gtk-app-devel-list mailing list
 gtk-app-devel-list@gnome.org
 http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list




-- 
Matteo Landi
http://www.matteolandi.net/
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list