UPDATE: It's within these two lines
I concur. I spent a while trying to find a leak in the threads code before trying this none threaded version--which leaks at exactly the same rate. I've tried various things, but Tk::Photo just seems to be hanging onto some memory somewhere. You may have to go to the Tk list to get answers.
If anyone can see how to stop this non-threaded version from leaking, it's a fair bet that it would fix the threaded version also.
#! perl -slw use strict; require Tk; #use Tk::X11Font; require Tk::JPEG; require LWP::UserAgent; require MIME::Base64; require IO::Socket; my $stop = 0; my $mw = MainWindow->new(title=>"Cams"); $mw->minsize( qw(640 480)); my $top = $mw->Frame()->pack(-side=>'top'); my $bottom = $mw->Frame()->pack(-side=>'bottom'); my @photos = ( $top->Label()->pack(-side => 'left'), $top->Label()->pack(-side => 'right'), $bottom->Label()->pack(-side => 'left'), $bottom->Label()->pack(-side => 'right'), ); my @jpgs = glob $ARGV[0]; my @data = map{ local $/; open my $fh, '<:raw', $_; <$fh> } @jpgs; my @image; $mw->Button(-text=>"Stop",-command => sub { $stop=1; })->pack(); $mw->repeat( 1000, sub{ for my $n ( 0 .. 3 ) { my $data = MIME::Base64::encode_base64( $data[ rand @data ] ); $image[ $n ]->delete if $image[ $n ]; undef $image[ $n ]; $image[ $n ] = $mw->Photo( -format=>'jpeg', -data=>$data ); $photos[ $n ]->configure( -image => $image[ $n ] ); } } ); Tk->MainLoop;
In reply to Re^5: Tk, threads, and mjpeg stream (Tk help required)
by BrowserUk
in thread Tk, threads, and mjpeg stream
by satanklawz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |