Added rfbSessionReader class to RfbPlayer class.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@134 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/rfbSessionReader.h b/rfbplayer/rfbSessionReader.h
index 90c0672..06941b1 100644
--- a/rfbplayer/rfbSessionReader.h
+++ b/rfbplayer/rfbSessionReader.h
@@ -16,7 +16,7 @@
  * USA.
  */
 
-// -=- RfbProto.h
+// -=- rfbSessionReader.h
 
 #include <rfb/Threading.h>
 
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 0993654..41f36ca 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -203,7 +203,7 @@
   autoplay(_autoplay), showControls(_showControls), buffer(0), client_size(0, 0, 32, 32), 
   window_size(0, 0, 32, 32), cutText(0), seekMode(false), fileName(_fileName), 
   serverInitTime(0), lastPos(0), timeStatic(0), speedEdit(0), speedTrackBar(0),
-  speedUpDown(0), acceptBell(_acceptBell) {
+  speedUpDown(0), acceptBell(_acceptBell), rfbReader(0) {
 
   if (showControls)
     CTRL_BAR_HEIGHT = 28;
@@ -229,6 +229,11 @@
 
 RfbPlayer::~RfbPlayer() {
   vlog.debug("~RfbPlayer");
+  if (rfbReader) {
+    rfbReader->stop();
+    delete rfbReader->join();
+    rfbReader = 0;
+  }
   if (mainHwnd) {
     setVisible(false);
     DestroyWindow(mainHwnd);
diff --git a/rfbplayer/rfbplayer.h b/rfbplayer/rfbplayer.h
index 04a14ee..062c715 100644
--- a/rfbplayer/rfbplayer.h
+++ b/rfbplayer/rfbplayer.h
@@ -22,8 +22,9 @@
 
 #include <rfb_win32/DIBSectionBuffer.h>
 
-#include <rfbplayer/RfbProto.h>
+//#include <rfbplayer/RfbProto.h>
 #include <rfbplayer/ToolBar.h>
+#include <rfbplayer/rfbSessionReader.h>
 
 using namespace rfb;
 using namespace rfb::win32;
@@ -135,6 +136,8 @@
     int CTRL_BAR_HEIGHT;
     
   protected:
+    // rfbReader is a class which used to reading the rfb data from the file
+    rfbSessionReader *rfbReader;
 
     // Returns true if part of the supplied rect is visible, false otherwise
     bool invalidateBufferRect(const Rect& crect);