Author: bdonlan
Date: 2004-05-30 12:45:30 -0400 (Sun, 30 May 2004)
New Revision: 198

Modified:
   trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Channel.pm
   trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm
   trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm
Log:
Fix possible race which can cause a POE warning on unclean (Ctrl-C) shutdown

Modified: trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Channel.pm
===================================================================
--- trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Channel.pm        2004-05-30 
16:40:17 UTC (rev 197)
+++ trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Channel.pm        2004-05-30 
16:45:30 UTC (rev 198)
@@ -104,6 +104,7 @@
                        haver_disconnected      _discon
                        haver_warn                      _warn
                        _start                          _start
+                       _stop                           _stop
                        destroy                         _destroy
                }}, # $page => {qw{
                ], # object_states =>
@@ -181,7 +182,7 @@
 sub removed {
        # We've been removed from the tablist, destroy the session
        my $self = shift;
-       $poe_kernel->post($self->{session}, 'destroy');
+       $poe_kernel->post($self->{session}, 'destroy') if $self->{session};
        delete $self->{notebook};
 }
 
@@ -201,6 +202,10 @@
        $kernel->post('haver', 'register', 'all');
 }
 
+sub _stop {
+       delete $_[OBJECT]->{session};
+}
+
 sub _joined {
        my ($self, $kernel, $chan) = @_[OBJECT,KERNEL,ARG1];
        if ($self->{channel} eq $chan) {

Modified: trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm
===================================================================
--- trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm  2004-05-30 16:40:17 UTC 
(rev 197)
+++ trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm  2004-05-30 16:45:30 UTC 
(rev 198)
@@ -59,6 +59,7 @@
                        haver_disconnected      _discon
                        haver_warn                      _warn
                        _start                          _start
+                       _stop                           _stop
                        destroy                         _destroy
                        }}, # $self => {qw{
                ], # object_methods => [
@@ -88,7 +89,7 @@
 
 sub removed {
        my $self = $_[0];
-       $poe_kernel->post($self->{session}, 'destroy');
+       $poe_kernel->post($self->{session}, 'destroy') if $self->{session};
 }
 
 sub process_pmsg {
@@ -138,6 +139,11 @@
        $kernel->post('haver', 'register', 'all');
 }
 
+sub _stop {
+       my $self = $_[OBJECT];
+       delete $self->{session};
+}
+
 sub _destroy {
        my ($self, $kernel) = @_[OBJECT,KERNEL];
        $kernel->post('haver', 'unregister', 'all');

Modified: trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm
===================================================================
--- trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm 2004-05-30 16:40:17 UTC 
(rev 197)
+++ trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm 2004-05-30 16:45:30 UTC 
(rev 198)
@@ -39,6 +39,7 @@
                        haver_raw_in            _in
                        haver_raw_out           _out
                        _start                          _start
+                       _stop                           _stop
                        destroy                         _destroy
                        }}, # $self => {qw{
                ], # object_states =>
@@ -47,6 +48,11 @@
        return $self;
 }
 
+sub removed {
+       my $self = shift;
+       $poe_kernel->post($self->{session}, 'destroy');
+}
+
 ### STATES
 
 sub _in {
@@ -65,6 +71,10 @@
        $_[KERNEL]->post('haver', 'register', 'all');
 }
 
+sub _stop {
+       delete $_[OBJECT]->{session};
+}
+
 sub _destroy {
        $_[KERNEL]->post('haver', 'unregister', 'all');
 }


Reply via email to