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');
}