Improved RfbPlayer class implementation,
added RfbPlayer::stopPlayback().
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@139 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index af6811b..c200918 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -250,8 +250,6 @@
LRESULT
RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- static HMENU hmenu; // handle to main menu
-
switch (msg) {
// -=- Process standard window messages
@@ -265,7 +263,7 @@
createToolBar(hwnd);
- hmenu = GetMenu(hwnd);
+ hMenu = GetMenu(hwnd);
return 0;
}
@@ -276,45 +274,21 @@
switch (LOWORD(wParam)) {
case ID_PLAY:
setPaused(false);
- tb.checkButton(ID_PLAY, true);
- tb.checkButton(ID_STOP, false);
- tb.checkButton(ID_PAUSE, false);
- CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
- CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
break;
case ID_PAUSE:
setPaused(true);
- tb.checkButton(ID_PAUSE, true);
- tb.checkButton(ID_PLAY, false);
- tb.checkButton(ID_STOP, false);
- CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
- CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
break;
case ID_STOP:
if (getTimeOffset() != 0) {
- setPos(0);
- setPaused(true);
+ stopPlayback();
}
- tb.checkButton(ID_STOP, true);
- tb.checkButton(ID_PLAY, false);
- tb.checkButton(ID_PAUSE, false);
- CheckMenuItem(hmenu, ID_STOP, MF_CHECKED);
- CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_UNCHECKED);
break;
case ID_PLAYPAUSE:
if (isPaused()) {
setPaused(false);
- tb.checkButton(ID_PLAY, true);
- tb.checkButton(ID_STOP, false);
- tb.checkButton(ID_PAUSE, false);
} else {
setPaused(true);
- tb.checkButton(ID_PAUSE, true);
- tb.checkButton(ID_PLAY, false);
- tb.checkButton(ID_STOP, false);
}
- CheckMenuItem(hmenu, ID_PLAYPAUSE, MF_CHECKED);
- CheckMenuItem(hmenu, ID_STOP, MF_UNCHECKED);
break;
case ID_FULLSCREEN:
MessageBox(getMainHandle(), "It is not working yet!", "RfbPlayer", MB_OK);
@@ -697,7 +671,7 @@
newSession(fileName);
skipHandshaking();
setSpeed(playbackSpeed);
- setPaused(paused);
+ is->pausePlayback();
}
void RfbPlayer::processMsg() {
@@ -713,9 +687,9 @@
if (strcmp(e.str(), "[End Of File]") == 0) {
rewind();
setPaused(true);
- tb.checkButton(ID_STOP, true);
- tb.checkButton(ID_PAUSE, false);
- tb.checkButton(ID_PLAY, false);
+/// tb.checkButton(ID_STOP, true);
+/// tb.checkButton(ID_PAUSE, false);
+/// tb.checkButton(ID_PLAY, false);
return;
}
// It's a special exception to perform backward seeking.
@@ -753,6 +727,8 @@
// Set the window title and show it
setTitle(cp.name());
+
+ setPaused(!autoplay);
}
void RfbPlayer::setColourMapEntries(int first, int count, U16* rgbs) {
@@ -831,11 +807,31 @@
void RfbPlayer::setPaused(bool paused) {
if (paused) {
is->pausePlayback();
+ tb.checkButton(ID_PAUSE, true);
+ tb.checkButton(ID_PLAY, false);
+ tb.checkButton(ID_STOP, false);
+ CheckMenuItem(hMenu, ID_PLAYPAUSE, MF_CHECKED);
+ CheckMenuItem(hMenu, ID_STOP, MF_UNCHECKED);
} else {
is->resumePlayback();
+ tb.checkButton(ID_PLAY, true);
+ tb.checkButton(ID_STOP, false);
+ tb.checkButton(ID_PAUSE, false);
+ CheckMenuItem(hMenu, ID_PLAYPAUSE, MF_CHECKED);
+ CheckMenuItem(hMenu, ID_STOP, MF_UNCHECKED);
}
}
+void RfbPlayer::stopPlayback() {
+ setPos(0);
+ is->pausePlayback();
+ tb.checkButton(ID_STOP, true);
+ tb.checkButton(ID_PLAY, false);
+ tb.checkButton(ID_PAUSE, false);
+ CheckMenuItem(hMenu, ID_STOP, MF_CHECKED);
+ CheckMenuItem(hMenu, ID_PLAYPAUSE, MF_UNCHECKED);
+}
+
void RfbPlayer::setSpeed(double speed) {
serverInitTime = serverInitTime * getSpeed() / speed;
is->setSpeed(speed);
diff --git a/rfbplayer/rfbplayer.h b/rfbplayer/rfbplayer.h
index 6b717ef..5896f27 100644
--- a/rfbplayer/rfbplayer.h
+++ b/rfbplayer/rfbplayer.h
@@ -120,6 +120,7 @@
void blankBuffer();
void rewind();
void setPaused(bool paused);
+ void stopPlayback();
long getTimeOffset();
bool isSeekMode();
bool isSeeking();
@@ -153,6 +154,7 @@
HWND speedEdit;
HWND speedTrackBar;
HWND speedUpDown;
+ HMENU hMenu;
Rect window_size;
Rect client_size;
Point scrolloffset;