CORBA-MICO
view release on metacpan or search on metacpan
void
GtkDispatcher::input_callback (gpointer _event, gint fd, GdkInputCondition o)
{
FileEvent *event = (FileEvent *)_event;
event->cb->callback (event->disp, event->ev);
}
gint
GtkDispatcher::timer_callback (gpointer _event)
{
TimerEvent *event = (TimerEvent *)_event;
GtkDispatcher *disp = event->disp;
list<TimerEvent *>::iterator i;
for (i = disp->tevents.begin(); i != disp->tevents.end(); ++i) {
if ((*i) == event) {
disp->tevents.erase(i);
break;
}
ev->tag = gdk_input_add (fd, GDK_INPUT_EXCEPTION,
input_callback, (gpointer)ev);
fevents.push_back (ev);
}
void
GtkDispatcher::tm_event (CORBA::DispatcherCallback *cb, CORBA::ULong tmout)
{
TimerEvent *ev = new TimerEvent (this, 0, cb);
ev->tag = funcs.gtk_timeout_add (tmout, timer_callback, (gpointer)ev);
tevents.push_back (ev);
}
void
GtkDispatcher::remove (CORBA::DispatcherCallback *cb, Event e)
{
if (e == All || e == Timer) {
list<TimerEvent *>::iterator i, next;
for (i = tevents.begin(); i != tevents.end(); i = next) {
next = i;
TimerEvent (GtkDispatcher *_disp, guint _tag,
CORBA::DispatcherCallback *_cb)
: disp (_disp), tag (_tag), cb (_cb)
{}
};
list<FileEvent *> fevents;
list<TimerEvent *> tevents;
GtkFunctions funcs;
static void input_callback (gpointer, int, GdkInputCondition);
static int timer_callback (gpointer);
public:
GtkDispatcher (GtkFunctions *_funcs);
virtual ~GtkDispatcher ();
virtual void rd_event (CORBA::DispatcherCallback *, CORBA::Long fd);
virtual void wr_event (CORBA::DispatcherCallback *, CORBA::Long fd);
virtual void ex_event (CORBA::DispatcherCallback *, CORBA::Long fd);
virtual void tm_event (CORBA::DispatcherCallback *, CORBA::ULong tmout);
virtual void remove (CORBA::DispatcherCallback *, Event);
virtual void run (CORBA::Boolean infinite = TRUE);
( run in 0.760 second using v1.01-cache-2.11-cpan-49f99fa48dc )