… | |
… | |
2 | |
2 | |
3 | EV::Glib - Embed the glib main loop into EV |
3 | EV::Glib - Embed the glib main loop into EV |
4 | |
4 | |
5 | =head1 SYNOPSIS |
5 | =head1 SYNOPSIS |
6 | |
6 | |
7 | use Glib::EV; |
7 | use EV::Glib; |
8 | |
8 | |
9 | =head1 DESCRIPTION |
9 | =head1 DESCRIPTION |
10 | |
10 | |
11 | If you want to use EV in a glib/gtk+ program, then you need to look at |
11 | If you want to use EV in a Glib/Gtk+ program, then you need to look at |
12 | the Glib::EV module, not this one, as this module requires you to run EV |
12 | the Glib::EV module, not this one, as this module requires you to run EV |
13 | in your main program. |
13 | in your main program. |
14 | |
14 | |
15 | If you want to use glib/gtk+ in an EV program, you are at the right place |
15 | If you want to use Glib/Gtk+ in an EV program, you are at the right place |
16 | here. |
16 | here. |
17 | |
17 | |
18 | This module embed the glib main loop into EV, that is, EV will also handle |
18 | This module embeds the Glib main loop into EV, that is, EV will also handle |
19 | Glib events. |
19 | Glib events. |
20 | |
20 | |
21 | This makes Glib compatible to EV. Calls into the EV main loop are more |
21 | This makes Glib compatible to EV. Calls into the EV main loop are more |
22 | or less equivalent to calls to Glib::MainLoop (but not vice versa, you |
22 | or less equivalent to calls to Glib::MainLoop (but not vice versa, you |
23 | I<have> to use the EV loop functions). |
23 | I<have> to use the EV loop functions). |
… | |
… | |
26 | |
26 | |
27 | =item * The Glib perl module is not used. |
27 | =item * The Glib perl module is not used. |
28 | |
28 | |
29 | This module has no dependency on the existing Glib perl interface, as it |
29 | This module has no dependency on the existing Glib perl interface, as it |
30 | uses glib directly. The Glib module can, however, be used without any |
30 | uses glib directly. The Glib module can, however, be used without any |
31 | problems (as long as evereybody uses shared libraries to keep everybody |
31 | problems (as long as everybody uses shared libraries to keep everybody |
32 | else happy). |
32 | else happy). |
33 | |
33 | |
34 | =item * The default context will be added to EV when the module is loaded. |
34 | =item * The default context will be added to EV when the module is loaded. |
35 | |
35 | |
36 | Loading this module will automatically integrate the default context into |
36 | Loading this module will automatically integrate the default context into |
37 | EV, so normally nothing else is required. |
37 | EV, so normally nothing else is required. |
38 | |
38 | |
39 | =item * There will be no g_main_loop or gtk_main loop available. |
39 | =item * There will be no g_main_loop or gtk_main loop available. |
40 | |
40 | |
41 | The EV event loop is not the gtk+ main loop. That means that things like |
41 | The EV event loop is not the gtk+ main loop. That means that things like |
42 | C<gtk_main_quit> will not work at all. |
42 | C<gtk_main_quit> will not work at all, as there is no glib mainloop. You |
|
|
43 | I<have> to use EV's equivalents, i.e. C<EV::unloop>. |
|
|
44 | |
|
|
45 | =item * You cannot call any glib loop functions while its context is active. |
|
|
46 | |
|
|
47 | This module uses a prepare watcher at lowest priority to dispatch glib |
|
|
48 | events and activate the main context. The context will be deactivated in a |
|
|
49 | check watcher of highest priority. |
|
|
50 | |
|
|
51 | That means that glib events will be dispatched with lowest priority, and |
|
|
52 | that you cannot call any glib main functions (or functions calling it) on |
|
|
53 | the default mainloop in highest-priority watchers and in lowest-priority |
|
|
54 | prepare watchers. |
|
|
55 | |
|
|
56 | =item * EV::Glib watchers will (currently) keep the mainloop alive. |
|
|
57 | |
|
|
58 | That means that, after loading this module, C<EV::loop> calls will never |
|
|
59 | return unless you call C<EV::unloop> explicitly. Future versions might fix |
|
|
60 | this problem so that Glib keeps the EV loop alive only when it has active |
|
|
61 | events waiting. |
43 | |
62 | |
44 | =cut |
63 | =cut |
45 | |
64 | |
46 | package EV::Glib; |
65 | package EV::Glib; |
47 | |
66 | |
48 | use Carp (); |
67 | use Carp (); |
49 | use EV (); |
68 | use EV (); |
50 | |
69 | |
51 | BEGIN { |
70 | BEGIN { |
52 | $VERSION = '0.1'; |
71 | $VERSION = '2.0'; |
53 | |
72 | |
54 | require XSLoader; |
73 | require XSLoader; |
55 | XSLoader::load (EV::Glib, $VERSION); |
74 | XSLoader::load (EV::Glib, $VERSION); |
56 | |
75 | |
57 | install (undef); |
76 | install (undef); |