X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fpython%2Fenigma_python.i;h=33fc0a1444206cacdeda34d8c3c2e8da2d1b3ab6;hb=1cdf6cb021fcaa6548b90ba7b6765cf1e8b8b37b;hp=367d8f8efa071e95e8a0585c8c1214c2d9927ce0;hpb=84670d3dc9c9dc29fd3af42b2f25092b3b6c2a09;p=vuplus_dvbapp diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 367d8f8..33fc0a1 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -29,10 +29,14 @@ Oh, things like "operator= is private in this context" etc. -is usually caused by not marking PSignals as immutable. - +is usually caused by not marking PSignals as immutable. */ +%define RefCount(...) +%typemap(newfree) __VA_ARGS__ * { eDebug("adding ref"); $1->AddRef(); } +%extend __VA_ARGS__ { ~__VA_ARGS__() { eDebug("removing ref!"); self->Release(); } } +%ignore __VA_ARGS__::~__VA_ARGS__(); +%enddef %module enigma %{ @@ -43,6 +47,7 @@ is usually caused by not marking PSignals as immutable. #include #include #include +#include #include #include @@ -51,13 +56,25 @@ is usually caused by not marking PSignals as immutable. #include #include #include +#include +#include +#include +#include +#include +#include extern void runMainloop(); +extern void quitMainloop(); extern PSignal1 &keyPressedSignal(); %} +RefCount(eListboxPythonStringContent) +RefCount(eListboxServiceContent) +RefCount(eComponentScan) + #define DEBUG +%include "typemaps.i" %include "stl.i" %include %include @@ -66,8 +83,13 @@ extern PSignal1 &keyPressedSignal(); %include %include %template(eServiceCenterPtr) ePtr; +%include + +// TODO: embed these... %immutable eButton::selected; +%immutable eComponentScan::statusChanged; +%immutable pNavigation::m_event; %include %include @@ -79,6 +101,21 @@ extern PSignal1 &keyPressedSignal(); %include %include %include +%include +%include +%include +%include +%include +%include + +/************** eptr **************/ + +%template(eActionMapPtr) ePtr; +RefCount(eActionMap) +%apply eActionMapPtr OUTPUT { eActionMapPtr &ptr } +%apply eActionMap* *OUTPUT { eActionMap **ptr } + +/************** signals **************/ template class PSignal0 { @@ -129,5 +166,6 @@ public: /************** debug **************/ void runMainloop(); +void quitMainloop(); %immutable keyPressed; PSignal1 &keyPressedSignal();