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


Deadlock/Freeze

2009-10-28 Thread Matteo Landi
Hi all,
I'm working on an application used for displaying news (taken
from internet) and spot-movies (using gstreamer).

In the short term usage, everything is ok, but when I leave the
application running for several hours, it ends freezing.

How is it possible to create deadlock? In theory everything should
be serialized in the gtk main loop, so there would not be any
concurrency at all.

The only thing that leaves me in doubts, is the interaction with gstreamer,
even thought I called gobject.threads_init() before the gtk.main_loop()
callback.

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?

Thanks in advance.

[1] http://faq.pygtk.org/index.py?req=editfile=faq20.015.htp

-- 
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