📄 myplayerlistenerpoller.cpp
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$////////////////////////////////////////////////////////////////////////#include "test/mp/MyPlayerListenerPoller.h"#include "os/OsBSem.h"#include "os/OsDefs.h"#include "mp/MpMisc.h"// Class used to wait for state changesMyPlayerListenerPoller::MyPlayerListenerPoller(int iTimeoutSecs) : mSemStateChange(OsBSem::Q_PRIORITY, OsBSem::EMPTY) , mSemGuard(OsBSem::Q_PRIORITY, OsBSem::FULL){ miTimeoutSec = iTimeoutSecs ; clearState();}MyPlayerListenerPoller::~MyPlayerListenerPoller(){}void MyPlayerListenerPoller::clearState(){ mSemGuard.acquire() ; for (int i=0; i<MAX_STATES; i++) mStates[i] = FALSE ; mSemGuard.release() ;}UtlBoolean MyPlayerListenerPoller::waitForState(PlayerState state){ mSemGuard.acquire() ; UtlBoolean bRetrieved = mStates[state] ; mSemGuard.release() ; while (bRetrieved == FALSE) { OsStatus status = mSemStateChange.acquire(OsTime(miTimeoutSec, 0)) ; if (status == OS_SUCCESS) { mSemGuard.acquire() ; bRetrieved = mStates[state] ; mSemGuard.release() ; } else { osPrintf("Timeout waiting for state %d\n", state) ; for (int i=0; i<MAX_STATES; i++) { osPrintf("\tState %2d: %d\n", i, mStates[i]) ; } break ; } } return bRetrieved ;}void MyPlayerListenerPoller::playerRealized(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPrefetched(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPlaying(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}void MyPlayerListenerPoller::playerPaused(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}void MyPlayerListenerPoller::playerStopped(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}void MyPlayerListenerPoller::playerFailed(MpPlayerEvent& event){ mStates[event.getState()] = TRUE ; mSemStateChange.release() ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -