diff options
| author | Ronny Strutz <ronny.strutz@multimedia-labs.de> | 2005-11-18 03:35:39 +0000 |
|---|---|---|
| committer | Ronny Strutz <ronny.strutz@multimedia-labs.de> | 2005-11-18 03:35:39 +0000 |
| commit | a3825f28e9fd321640ecaf782b2983669fb5e743 (patch) | |
| tree | 143e0c81b221d403dfd5d45ce8144ba28a0cc004 | |
| parent | 5cdabb1038ec3f628001f26f5d587eb95ca6465d (diff) | |
| download | enigma2-a3825f28e9fd321640ecaf782b2983669fb5e743.tar.gz enigma2-a3825f28e9fd321640ecaf782b2983669fb5e743.zip | |
app-manager takes care of its own instancepointer in slot
| -rw-r--r-- | lib/dvb_ci/dvbci.cpp | 7 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_appmgr.cpp | 11 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_appmgr.h | 5 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_session.cpp | 2 |
4 files changed, 19 insertions, 6 deletions
diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp index 71994538..4e5b6e68 100644 --- a/lib/dvb_ci/dvbci.cpp +++ b/lib/dvb_ci/dvbci.cpp @@ -140,9 +140,6 @@ void eDVBCISlot::data(int what) notifier->setRequested(eSocketNotifier::Read); //HACK eDVBCI_UI::getInstance()->setState(0,0); - //FIXME; do in deconstructor of the appmgr class - application_manager = 0; - mmi_session = 0; } return; } @@ -185,10 +182,10 @@ DEFINE_REF(eDVBCISlot); eDVBCISlot::eDVBCISlot(eMainloop *context, int nr) { char filename[128]; - + application_manager = 0; mmi_session = 0; - + slotid = nr; sprintf(filename, "/dev/ci%d", nr); diff --git a/lib/dvb_ci/dvbci_appmgr.cpp b/lib/dvb_ci/dvbci_appmgr.cpp index f07ea999..7843554d 100644 --- a/lib/dvb_ci/dvbci_appmgr.cpp +++ b/lib/dvb_ci/dvbci_appmgr.cpp @@ -3,6 +3,17 @@ #include <lib/dvb_ci/dvbci_appmgr.h> #include <lib/dvb_ci/dvbci_ui.h> +eDVBCIApplicationManagerSession::eDVBCIApplicationManagerSession(eDVBCISlot *tslot) +{ + slot = tslot; + slot->application_manager = this; +} + +eDVBCIApplicationManagerSession::~eDVBCIApplicationManagerSession() +{ + slot = 0; +} + int eDVBCIApplicationManagerSession::receivedAPDU(const unsigned char *tag,const void *data, int len) { printf("SESSION(%d)/APP %02x %02x %02x: ", session_nb, tag[0], tag[1], tag[2]); diff --git a/lib/dvb_ci/dvbci_appmgr.h b/lib/dvb_ci/dvbci_appmgr.h index 1d6e7b15..7a94bafc 100644 --- a/lib/dvb_ci/dvbci_appmgr.h +++ b/lib/dvb_ci/dvbci_appmgr.h @@ -8,10 +8,15 @@ class eDVBCIApplicationManagerSession: public eDVBCISession enum { stateFinal=statePrivate, }; + + eDVBCISlot *slot; + int wantmenu; int receivedAPDU(const unsigned char *tag, const void *data, int len); int doAction(); public: + eDVBCIApplicationManagerSession(eDVBCISlot *tslot); + ~eDVBCIApplicationManagerSession(); int enterMenu(); int startMMI(); }; diff --git a/lib/dvb_ci/dvbci_session.cpp b/lib/dvb_ci/dvbci_session.cpp index a0171a3d..bb8ba869 100644 --- a/lib/dvb_ci/dvbci_session.cpp +++ b/lib/dvb_ci/dvbci_session.cpp @@ -136,7 +136,7 @@ eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned cha printf("session: %p\n",session); break; case 0x00020041: - session=slot->application_manager = new eDVBCIApplicationManagerSession; + session=slot->application_manager = new eDVBCIApplicationManagerSession(slot); printf("APPLICATION MANAGER\n"); break; case 0x00030041: |
