in reply to Does GStreamer block Tk?

Is the Glib::MainLoop overruling the Tk::MainLoop? Are there any recipes to make this combination work?

Yes, you can make the Tk and Gtk2 loop work together. One loop must be the master, and the other is given a (pseudocode) do_one_loop command thru a timer.

Here is a basic example. This technique works for combining all eventloop systems, like Gtk2, SDL, Tk, POE, GLib, Wx, etc.

#!/usr/bin/perl -w use strict; use Gtk2; use Tk; #setup Tk loop my $mw = MainWindow->new(-title=>'Tk Window'); my $count_tk = 0; my $labtk = $mw->Label(-textvariable =>\$count_tk)->pack; #setup Gtk2 loop Gtk2->init; my $count_gtk = 0; my $window = Gtk2::Window->new('toplevel'); $window->set_title('Gtk2 Window'); my $glabel = Gtk2::Label->new("This is a Gtk2 Label $count_gtk"); $window->add($glabel); $window->show_all; # make Tk loop the master, but you could make Gtk2 master if desired # the lower the repeat rate, i.e. 1 ms, # will give more cpu time to the gtk2 loop # this is sometimes called manually pumping the event loop my $tktimer = $mw->repeat(10, sub{ $count_gtk++; $glabel->set_text("This is a Gtk2 Label $count_gtk"); Gtk2->main_iteration while Gtk2->events_pending; $count_tk++; }); $mw->Button(-text=>' Tk control Quit ', -command => sub{exit} )->pack(); # make the Tk Mainloop the controller MainLoop;

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku