Fixed the problem with crashes the player when it starts without
command-line parameters.
Solved problem with buzzing program on some computers.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@159 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 5cddf85..60c1c3b 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -237,7 +237,7 @@
// Create the backing buffer
buffer = new win32::DIBSectionBuffer(getFrameHandle());
setVisible(true);
-
+
// Open the session file
if (fileName) {
openSessionFile(fileName);
@@ -257,8 +257,8 @@
DestroyWindow(mainHwnd);
mainHwnd = 0;
}
- delete buffer;
- delete cutText;
+ if (buffer) delete buffer;
+ if (cutText) delete [] cutText;
vlog.debug("~RfbPlayer done");
}
@@ -362,7 +362,7 @@
}
break;
case ID_EXIT:
- is->resumePlayback();
+ if (is) is->resumePlayback();
PostQuitMessage(0);
break;
case ID_HELP_COMMANDLINESWITCHES:
@@ -472,7 +472,7 @@
case WM_PAINT:
{
- if (is->isSeeking()) {
+ if (isSeeking()) {
seekMode = true;
return 0;
} else {
@@ -926,7 +926,7 @@
CheckMenuItem(hMenu, ID_PLAYPAUSE, MF_CHECKED);
CheckMenuItem(hMenu, ID_STOP, MF_UNCHECKED);
} else {
- is->resumePlayback();
+ if (is) is->resumePlayback();
tb.checkButton(ID_PLAY, true);
tb.checkButton(ID_STOP, false);
tb.checkButton(ID_PAUSE, false);
@@ -937,7 +937,7 @@
void RfbPlayer::stopPlayback() {
setPos(0);
- is->pausePlayback();
+ if (is) is->pausePlayback();
tb.checkButton(ID_STOP, true);
tb.checkButton(ID_PLAY, false);
tb.checkButton(ID_PAUSE, false);
@@ -965,7 +965,8 @@
}
bool RfbPlayer::isSeeking() {
- return is->isSeeking();
+ if (is) return is->isSeeking();
+ else return false;
}
bool RfbPlayer::isSeekMode() {
@@ -1019,7 +1020,7 @@
double playbackSpeed = 1.0;
long initTime = -1;
bool autoplay = false;
-char *fileName;
+char *fileName = 0;
bool print_usage = false;
bool acceptBell = false;