[Tigervnc-commits] SF.net SVN: tigervnc:[4580] trunk/vncviewer/Viewport.cxx

2011-07-12 Thread ossman_
Revision: 4580
  http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4580view=rev
Author:   ossman_
Date: 2011-07-12 16:02:30 + (Tue, 12 Jul 2011)

Log Message:
---
Simplify things by using the handleKeyEvent() method for the fake presses
that can be generated from the popup menu.

Modified Paths:
--
trunk/vncviewer/Viewport.cxx

Modified: trunk/vncviewer/Viewport.cxx
===
--- trunk/vncviewer/Viewport.cxx2011-07-12 15:54:25 UTC (rev 4579)
+++ trunk/vncviewer/Viewport.cxx2011-07-12 16:02:30 UTC (rev 4580)
@@ -762,28 +762,23 @@
 break;
 #endif
   case ID_CTRL:
-if (!viewOnly)
-  cc-writer()-keyEvent(XK_Control_L, m-value());
+handleKeyEvent(FL_Control_L, FL_Control_L, , m-value());
 break;
   case ID_ALT:
-if (!viewOnly)
-  cc-writer()-keyEvent(XK_Alt_L, m-value());
+handleKeyEvent(FL_Alt_L, FL_Alt_L, , m-value());
 break;
   case ID_MENUKEY:
-if (!viewOnly) {
-  handleKeyEvent(menuKeyCode, menuKeyCode, , true);
-  handleKeyEvent(menuKeyCode, menuKeyCode, , false);
-}
+handleKeyEvent(menuKeyCode, menuKeyCode, , true);
+handleKeyEvent(menuKeyCode, menuKeyCode, , false);
 break;
   case ID_CTRLALTDEL:
-if (!viewOnly) {
-  cc-writer()-keyEvent(XK_Control_L, true);
-  cc-writer()-keyEvent(XK_Alt_L, true);
-  cc-writer()-keyEvent(XK_Delete, true);
-  cc-writer()-keyEvent(XK_Delete, false);
-  cc-writer()-keyEvent(XK_Alt_L, false);
-  cc-writer()-keyEvent(XK_Control_L, false);
-}
+handleKeyEvent(FL_Control_L, FL_Control_L, , true);
+handleKeyEvent(FL_Alt_L, FL_Alt_L, , true);
+handleKeyEvent(FL_Delete, FL_Delete, , true);
+
+handleKeyEvent(FL_Delete, FL_Delete, , false);
+handleKeyEvent(FL_Alt_L, FL_Alt_L, , false);
+handleKeyEvent(FL_Control_L, FL_Control_L, , false);
 break;
   case ID_REFRESH:
 cc-refreshFramebuffer();


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits


[Tigervnc-commits] SF.net SVN: tigervnc:[4581] trunk/vncviewer/Viewport.cxx

2011-07-12 Thread ossman_
Revision: 4581
  http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4581view=rev
Author:   ossman_
Date: 2011-07-12 16:10:16 + (Tue, 12 Jul 2011)

Log Message:
---
More consolidation into handleKeyEvent().

Modified Paths:
--
trunk/vncviewer/Viewport.cxx

Modified: trunk/vncviewer/Viewport.cxx
===
--- trunk/vncviewer/Viewport.cxx2011-07-12 16:02:30 UTC (rev 4580)
+++ trunk/vncviewer/Viewport.cxx2011-07-12 16:10:16 UTC (rev 4581)
@@ -387,11 +387,9 @@
   case FL_UNFOCUS:
 // Release all keys that were pressed as that generally makes most
 // sense (e.g. Alt+Tab where we only see the Alt press)
-for (iter = downKeySym.begin();iter != downKeySym.end();++iter) {
-  vlog.debug(Key released: 0x%04x = 0x%04x, iter-first, iter-second);
-  cc-writer()-keyEvent(iter-second, false);
-}
-downKeySym.clear();
+while (!downKeySym.empty())
+  handleKeyEvent(downKeySym.begin()-first, downKeySym.begin()-first,
+ , false);
 return 1;
 
   case FL_KEYDOWN:


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

--
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
___
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits


[Tigervnc-commits] SF.net SVN: tigervnc:[4582] trunk/vncviewer

2011-07-12 Thread ossman_
Revision: 4582
  http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4582view=rev
Author:   ossman_
Date: 2011-07-12 16:56:34 + (Tue, 12 Jul 2011)

Log Message:
---
Destroy the main UI and connection objects before popping up the fatal error
message. This avoids a lot of problems with recursion and trying to send
events over a dead socket.

Modified Paths:
--
trunk/vncviewer/CConn.cxx
trunk/vncviewer/vncviewer.cxx
trunk/vncviewer/vncviewer.h

Modified: trunk/vncviewer/CConn.cxx
===
--- trunk/vncviewer/CConn.cxx   2011-07-12 16:10:16 UTC (rev 4581)
+++ trunk/vncviewer/CConn.cxx   2011-07-12 16:56:34 UTC (rev 4582)
@@ -198,8 +198,7 @@
 exit_vncviewer();
   } catch (rdr::Exception e) {
 vlog.error(e.str());
-fl_alert(e.str());
-exit_vncviewer();
+exit_vncviewer(e.str());
   }
 
   recursing = false;

Modified: trunk/vncviewer/vncviewer.cxx
===
--- trunk/vncviewer/vncviewer.cxx   2011-07-12 16:10:16 UTC (rev 4581)
+++ trunk/vncviewer/vncviewer.cxx   2011-07-12 16:56:34 UTC (rev 4582)
@@ -66,9 +66,15 @@
 static char aboutText[1024];
 
 static bool exitMainloop = false;
+static const char *exitError = NULL;
 
-void exit_vncviewer()
+void exit_vncviewer(const char *error)
 {
+  // Prioritise the first error we get as that is probably the most
+  // relevant one.
+  if ((error != NULL)  (exitError == NULL))
+exitError = strdup(error);
+
   exitMainloop = true;
 }
 
@@ -267,7 +273,7 @@
   return 1;
   }
 
-  CConn cc(vncServerName);
+  CConn *cc = new CConn(vncServerName);
 
   while (!exitMainloop) {
 int next_timer;
@@ -282,5 +288,10 @@
 }
   }
 
+  delete cc;
+
+  if (exitError != NULL)
+fl_alert(exitError);
+
   return 0;
 }

Modified: trunk/vncviewer/vncviewer.h
===
--- trunk/vncviewer/vncviewer.h 2011-07-12 16:10:16 UTC (rev 4581)
+++ trunk/vncviewer/vncviewer.h 2011-07-12 16:56:34 UTC (rev 4582)
@@ -19,7 +19,7 @@
 #ifndef __VNCVIEWER_H__
 #define __VNCVIEWER_H__
 
-void exit_vncviewer();
+void exit_vncviewer(const char *error = NULL);
 void about_vncviewer();
 
 #endif


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

--
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on Lean Startup 
Secrets Revealed. This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
___
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits


[Tigervnc-commits] SF.net SVN: tigervnc:[4583] trunk/vncviewer/Viewport.cxx

2011-07-12 Thread ossman_
Revision: 4583
  http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4583view=rev
Author:   ossman_
Date: 2011-07-12 16:58:12 + (Tue, 12 Jul 2011)

Log Message:
---
Mostly we will catch socket errors when processing incoming data, but
sometimes we'll time it so that a write will be the initial offender. Make
sure these cases are also properly caught and dealt with.

Modified Paths:
--
trunk/vncviewer/Viewport.cxx

Modified: trunk/vncviewer/Viewport.cxx
===
--- trunk/vncviewer/Viewport.cxx2011-07-12 16:56:34 UTC (rev 4582)
+++ trunk/vncviewer/Viewport.cxx2011-07-12 16:58:12 UTC (rev 4583)
@@ -327,8 +327,14 @@
 assert(ret  (Fl::event_length() + 1));
 
 vlog.debug(Sending clipboard data: '%s', buffer);
-cc-writer()-clientCutText(buffer, ret);
 
+try {
+  cc-writer()-clientCutText(buffer, ret);
+} catch (rdr::Exception e) {
+  vlog.error(e.str());
+  exit_vncviewer(e.str());
+}
+
 delete [] buffer;
 
 return 1;
@@ -455,7 +461,12 @@
 {
   if (!viewOnly) {
 if (pointerEventInterval == 0 || buttonMask != lastButtonMask) {
-  cc-writer()-pointerEvent(pos, buttonMask);
+  try {
+cc-writer()-pointerEvent(pos, buttonMask);
+  } catch (rdr::Exception e) {
+vlog.error(e.str());
+exit_vncviewer(e.str());
+  }
 } else {
   if (!Fl::has_timeout(handlePointerTimeout, this))
 Fl::add_timeout((double)pointerEventInterval/1000.0,
@@ -473,7 +484,12 @@
 
   assert(self);
 
-  self-cc-writer()-pointerEvent(self-lastPointerPos, self-lastButtonMask);
+  try {
+self-cc-writer()-pointerEvent(self-lastPointerPos, 
self-lastButtonMask);
+  } catch (rdr::Exception e) {
+vlog.error(e.str());
+exit_vncviewer(e.str());
+  }
 }
 
 
@@ -683,7 +699,12 @@
 
 vlog.debug(Key released: 0x%04x = 0x%04x, origKeyCode, iter-second);
 
-cc-writer()-keyEvent(iter-second, false);
+try {
+  cc-writer()-keyEvent(iter-second, false);
+} catch (rdr::Exception e) {
+  vlog.error(e.str());
+  exit_vncviewer(e.str());
+}
 
 downKeySym.erase(iter);
 
@@ -698,7 +719,13 @@
  origKeyCode, keyCode, keyText, keySym);
 
   downKeySym[origKeyCode] = keySym;
-  cc-writer()-keyEvent(keySym, down);
+
+  try {
+cc-writer()-keyEvent(keySym, down);
+  } catch (rdr::Exception e) {
+vlog.error(e.str());
+exit_vncviewer(e.str());
+  }
 }
 
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

--
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on Lean Startup 
Secrets Revealed. This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
___
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits