return;
}
- switch (event)
- {
- case iPlayableService::evEnd:
- m_event(this, evEnd);
- break;
- case iPlayableService::evStart:
- m_event(this, evNewService);
- break;
- case iPlayableService::evUpdatedEventInfo:
- m_event(this, evUpdatedEventInfo);
- break;
- case iPlayableService::evUpdatedInfo:
- m_event(this, evUpdatedInfo);
- break;
- case iPlayableService::evSeekableStatusChanged:
- m_event(this, evSeekableStatusChanged);
- break;
- default:
- break;
- }
+ m_event(this, event);
}
RESULT eNavigation::playService(const eServiceReference &service)
if (!m_runningService)
return 1;
/* send stop event */
- m_event(this, evStopService);
+ m_event(this, iPlayableService::evEnd);
+ m_runningService->stop();
/* kill service. */
m_runningService = 0;
m_service_event_conn = 0;
ePtr<eConnection> m_service_event_conn;
void serviceEvent(iPlayableService* service, int event);
public:
- enum
- {
- evStopService, /** the "current" service was just stopped and likes to be deallocated (clear refs!) */
- evNewService, /** a new "current" service was just started */
- evPlayFailed, /** the next service (in playlist) or the one given in playService failed to play */
- evUpdatedEventInfo, /** the "currently running" event info was updated */
- evUpdatedInfo, /** the program info of this service was updated */
- evSeekableStatusChanged,
- evEnd
- };
RESULT playService(const eServiceReference &service);
RESULT connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection);
void pNavigation::navEvent(eNavigation *nav, int event)
{
/* just relay the events here. */
- switch (event)
- {
- case eNavigation::evStopService:
- m_event(evStopService);
- break;
- case eNavigation::evNewService:
- m_event(evNewService);
- break;
- case eNavigation::evPlayFailed:
- m_event(evPlayFailed);
- break;
- case eNavigation::evUpdatedEventInfo:
- m_event(evUpdatedEventInfo);
- break;
- case eNavigation::evUpdatedInfo:
- m_event(evUpdatedInfo);
- break;
- case eNavigation::evSeekableStatusChanged:
- m_event(evSeekableStatusChanged);
- break;
- case eNavigation::evEnd:
- m_event(evEnd);
- }
+ m_event(event);
}
public:
PSignal1<void, int> m_event;
- enum
- {
- evStopService, /** the "current" service was just stopped and likes to be deallocated (clear refs!) */
- evNewService, /** a new "current" service was just started */
- evPlayFailed, /** the next service (in playlist) or the one given in playService failed to play */
- evUpdatedEventInfo, /** the "currently running" event info was updated */
- evUpdatedInfo, /** the program info of this service was updated */
- evSeekableStatusChanged,
- evEnd
- };
-
pNavigation();
RESULT playService(const eServiceReference &service);