ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Impl/Glib.pm
Revision: 1.10
Committed: Sun Mar 25 00:14:25 2007 UTC (17 years, 1 month ago) by root
Branch: MAIN
Changes since 1.9: +1 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 package AnyEvent::Impl::Glib;
2    
3 root 1.8 no warnings;
4 root 1.10 use strict;
5 root 1.8
6 root 1.1 use Glib ();
7    
8     my $maincontext = Glib::MainContext->default;
9    
10 root 1.2 sub io {
11     my ($class, %arg) = @_;
12    
13 root 1.3 my $self = bless \%arg, $class;
14 root 1.2 my $rcb = \$self->{cb};
15    
16 root 1.4 # some glibs need hup, others error with it, YMMV
17 root 1.6 push @cond, "in", "hup" if $self->{poll} eq "r";
18     push @cond, "out", "hup" if $self->{poll} eq "w";
19 root 1.2
20     $self->{source} = add_watch Glib::IO fileno $self->{fh}, \@cond, sub {
21 root 1.6 $$rcb->();
22 root 1.2 ! ! $$rcb
23     };
24 root 1.1
25 root 1.2 $self
26 root 1.1 }
27    
28 root 1.2 sub timer {
29     my ($class, %arg) = @_;
30 root 1.1
31 root 1.3 my $self = bless \%arg, $class;
32 root 1.2 my $cb = $self->{cb};
33 root 1.1
34 root 1.2 $self->{source} = add Glib::Timeout $self->{after} * 1000, sub {
35     $cb->();
36     0
37 root 1.1 };
38    
39 root 1.2 $self
40 root 1.1 }
41    
42 root 1.6 sub DESTROY {
43 root 1.1 my ($self) = @_;
44    
45     remove Glib::Source delete $self->{source} if $self->{source};
46 root 1.6 # need to undef $cb because we hold references to it
47 root 1.2 $self->{cb} = undef;
48 root 1.6 %$self = ();
49 root 1.2 }
50    
51 root 1.7 sub one_event {
52     $maincontext->iteration (1);
53     }
54    
55 root 1.4 1
56 root 1.1