+#endif
+
+class ePythonMessagePump: public eMessagePump, public Object
+{
+ eSocketNotifier *sn;
+ void do_recv(int)
+ {
+ int msg;
+ recv(&msg, sizeof(msg));
+ /*emit*/ recv_msg(msg);
+ }
+public:
+ PSignal1<void,int> recv_msg;
+ void send(int msg)
+ {
+ eMessagePump::send(&msg, sizeof(msg));
+ }
+ ePythonMessagePump()
+ :eMessagePump(1)
+ {
+ eDebug("add python messagepump %p", this);
+ sn=new eSocketNotifier(eApp, getOutputFD(), eSocketNotifier::Read);
+ CONNECT(sn->activated, ePythonMessagePump::do_recv);
+ sn->start();
+ }
+ ~ePythonMessagePump()
+ {
+ eDebug("remove python messagepump %p", this);
+ delete sn;
+ sn=0;
+ }
+ void start() { if (sn) sn->start(); }
+ void stop() { if (sn) sn->stop(); }
+};