Hi all,
vncviewer doesn't receive clipboard selection from server.
CMsgReader::readServerCutText function calls handler->serverCutText()
but this call is not correctly propagated to the corresponding CConn method.
After inspection main problem is wrong prototype of the
CConn::serverCutText function. It has to be same as prototype of the
CMsgHandler::serverCutText function.
I also modified CMsgHandler class to contain pure virtual methods
instead of methods with empty body. This modification will eliminate
annoying problems like bad CConn::serverCutText prototype in future.
Patch should be commited to both 1.0 and trunk.
Regards, Adam
--
Adam Tkac, Red Hat, Inc.
Index: unix/vncviewer/CConn.h
===================================================================
--- unix/vncviewer/CConn.h (revision 3834)
+++ unix/vncviewer/CConn.h (working copy)
@@ -80,7 +80,7 @@
void setName(const char* name);
void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
void bell();
- void serverCutText(const char* str, int len);
+ void serverCutText(const char* str, rdr::U32 len);
void framebufferUpdateStart();
void framebufferUpdateEnd();
void beginRect(const rfb::Rect& r, unsigned int encoding);
Index: unix/vncviewer/CConn.cxx
===================================================================
--- unix/vncviewer/CConn.cxx (revision 3834)
+++ unix/vncviewer/CConn.cxx (working copy)
@@ -389,7 +389,7 @@
void CConn::bell() { XBell(dpy, 0); }
-void CConn::serverCutText(const char* str, int len) {
+void CConn::serverCutText(const char* str, rdr::U32 len) {
desktop->serverCutText(str,len);
}
Index: common/rfb/CMsgHandler.h
===================================================================
--- common/rfb/CMsgHandler.h (revision 3834)
+++ common/rfb/CMsgHandler.h (working copy)
@@ -49,24 +49,24 @@
int w, int h,
const ScreenSet& layout);
virtual void setCursor(int width, int height, const Point& hotspot,
- void* data, void* mask);
+ void* data, void* mask) = 0;
virtual void setPixelFormat(const PixelFormat& pf);
virtual void setName(const char* name);
- virtual void serverInit();
+ virtual void serverInit() = 0;
- virtual void framebufferUpdateStart();
- virtual void framebufferUpdateEnd();
- virtual void beginRect(const Rect& r, unsigned int encoding);
- virtual void endRect(const Rect& r, unsigned int encoding);
+ virtual void framebufferUpdateStart() = 0;
+ virtual void framebufferUpdateEnd() = 0;
+ virtual void beginRect(const Rect& r, unsigned int encoding) = 0;
+ virtual void endRect(const Rect& r, unsigned int encoding) = 0;
virtual void setColourMapEntries(int firstColour, int nColours,
- rdr::U16* rgbs);
- virtual void bell();
- virtual void serverCutText(const char* str, rdr::U32 len);
+ rdr::U16* rgbs) = 0;
+ virtual void bell() = 0;
+ virtual void serverCutText(const char* str, rdr::U32 len) = 0;
- virtual void fillRect(const Rect& r, Pixel pix);
- virtual void imageRect(const Rect& r, void* pixels);
- virtual void copyRect(const Rect& r, int srcX, int srcY);
+ virtual void fillRect(const Rect& r, Pixel pix) = 0;
+ virtual void imageRect(const Rect& r, void* pixels) = 0;
+ virtual void copyRect(const Rect& r, int srcX, int srcY) = 0;
ConnParams cp;
};
Index: common/rfb/CMsgHandler.cxx
===================================================================
--- common/rfb/CMsgHandler.cxx (revision 3834)
+++ common/rfb/CMsgHandler.cxx (working copy)
@@ -55,10 +55,6 @@
cp.screenLayout = layout;
}
-void CMsgHandler::setCursor(int w, int h, const Point& hotspot, void* data,
void* mask)
-{
-}
-
void CMsgHandler::setPixelFormat(const PixelFormat& pf)
{
cp.setPF(pf);
@@ -69,50 +65,3 @@
cp.setName(name);
}
-void CMsgHandler::serverInit()
-{
- throw Exception("CMsgHandler::serverInit called");
-}
-
-void CMsgHandler::framebufferUpdateStart()
-{
-}
-
-void CMsgHandler::framebufferUpdateEnd()
-{
-}
-
-void CMsgHandler::beginRect(const Rect& r, unsigned int encoding)
-{
-}
-
-void CMsgHandler::endRect(const Rect& r, unsigned int encoding)
-{
-}
-
-
-void CMsgHandler::setColourMapEntries(int firstColour, int nColours,
- rdr::U16* rgbs)
-{
- throw Exception("CMsgHandler::setColourMapEntries called");
-}
-
-void CMsgHandler::bell()
-{
-}
-
-void CMsgHandler::serverCutText(const char* str, rdr::U32 len)
-{
-}
-
-void CMsgHandler::fillRect(const Rect& r, Pixel pix)
-{
-}
-
-void CMsgHandler::imageRect(const Rect& r, void* pixels)
-{
-}
-
-void CMsgHandler::copyRect(const Rect& r, int srcX, int srcY)
-{
-}
Index: win/vncviewer/CConn.h
===================================================================
--- win/vncviewer/CConn.h (revision 3834)
+++ win/vncviewer/CConn.h (working copy)
@@ -97,6 +97,7 @@
CSecurity* getCSecurity(int secType);
void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
void bell();
+ void framebufferUpdateStart() {}
void framebufferUpdateEnd();
void setDesktopSize(int w, int h);
void setExtendedDesktopSize(int reason, int result, int w, int h,
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel