2 This file is part of libmspframework
3 Copyright © 2006 Mikko Rasa, Mikkosoft Productions
4 Distributed under the LGPL
6 #include "application.h"
13 EventManager::EventManager(Application &a):
17 app.add_pollable(&pipe, POLLIN).signal_event.connect(sigc::mem_fun(this, &EventManager::data_available));
20 EventManager::Event &EventManager::create_event()
22 events.push_back(Event(*this, next_id++));
26 void EventManager::data_available(short)
29 int len=pipe.read((char *)buf, sizeof(buf));
30 for(unsigned i=0; i*sizeof(unsigned)<(unsigned)len; ++i)
32 for(list<Event>::iterator j=events.begin(); j!=events.end(); ++j)
33 if(j->get_id()==buf[i])
34 j->signal_triggered.emit();
38 void EventManager::Event::trigger()
40 mgr.pipe.write((char *)&id, sizeof(id));
43 EventManager::Pipe::Pipe()
48 int EventManager::Pipe::write(char *buf, unsigned len)
50 return ::write(fd[1], buf, len);
53 int EventManager::Pipe::read(char *buf, unsigned len)
55 return ::read(fd[0], buf, len);