Revision: 4972
          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4972&view=rev
Author:   astrand
Date:     2012-08-27 07:28:08 +0000 (Mon, 27 Aug 2012)
Log Message:
-----------
Added a standard -geometry command line option. Such an option is
actually already documented on the man page. 

Modified Paths:
--------------
    trunk/vncviewer/CMakeLists.txt
    trunk/vncviewer/DesktopWindow.cxx
    trunk/vncviewer/parameters.cxx
    trunk/vncviewer/parameters.h

Modified: trunk/vncviewer/CMakeLists.txt
===================================================================
--- trunk/vncviewer/CMakeLists.txt      2012-08-26 21:19:19 UTC (rev 4971)
+++ trunk/vncviewer/CMakeLists.txt      2012-08-27 07:28:08 UTC (rev 4972)
@@ -45,15 +45,55 @@
   add_executable(vncviewer ${VNCVIEWER_SOURCES})
 endif()
 
-target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} 
${GETTEXT_LIBRARIES})
 
-# When building with GnuTLS, librdr depends on ws2_32, so in order to make
-# MinGW happy, we need to put ws2_32 in librdr's target_link_libraries string,
-# not here.
-if(NOT GNUTLS_FOUND AND WIN32)
-  target_link_libraries(vncviewer ws2_32)
+# XXX: Cendio hack
+#target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} 
${GETTEXT_LIBRARIES})
+#
+## When building with GnuTLS, librdr depends on ws2_32, so in order to make
+## MinGW happy, we need to put ws2_32 in librdr's target_link_libraries string,
+## not here.
+#if(NOT GNUTLS_FOUND AND WIN32)
+#  target_link_libraries(vncviewer ws2_32)
+#endif()
+
+target_link_libraries(vncviewer -nodefaultlibs rfb network rdr os Xregion)
+
+if(APPLE)
+  target_link_libraries(vncviewer "-framework Carbon" "-framework Cocoa" 
"-framework ApplicationServices")
 endif()
 
+if(UNIX AND NOT APPLE)
+  # Needed to load icon files
+  target_link_libraries(vncviewer -Wl,-Bstatic ${FLTK_IMAGES_LIBRARY} png 
-Wl,-Bdynamic)
+endif()
+
+target_link_libraries(vncviewer -Wl,-Bstatic ${FLTK_BASE_LIBRARY} 
-Wl,-Bdynamic)
+
+if(WIN32)
+  target_link_libraries(vncviewer -Wl,-Bstatic ${GETTEXT_LIBRARIES} 
${ICONV_LIBRARIES} -Wl,-Bdynamic)
+elseif(APPLE)
+  target_link_libraries(vncviewer -Wl,-Bstatic ${GETTEXT_LIBRARIES} 
-Wl,-Bdynamic ${ICONV_LIBRARIES})
+else()
+  if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+    # XXX: Cendio hack: Add rpath to find libXfixes on Solaris without 
LD_LIBRARY_PATH.
+    # XXX: Cendio hack: libXft is broken on at least our servers
+    # XXX: Cendio hack: In theory, we must add freetype. However, in practice 
this does not work, since it is not found,
+    # since it's in /usr/sparc-sun-solaris2.10/sys-root/usr/sfw/lib/. It works 
if we DONT specify it, though. 
+    target_link_libraries(vncviewer ${X11_Xcursor_LIB} ${X11_Xfixes_LIB} 
/usr/sparc-sun-solaris2.10/sys-root/usr/X11/lib/libXinerama.so -Wl,-Bstatic Xft 
-Wl,-Bdynamic fontconfig Xext -R/usr/sfw/lib)
+  else()
+    target_link_libraries(vncviewer -Wl,-Bstatic ${X11_Xcursor_LIB} 
${X11_Xfixes_LIB} Xft fontconfig expat freetype Xrender Xext Xinerama 
-Wl,-Bdynamic)
+  endif()
+  target_link_libraries(vncviewer X11 m )
+endif()
+
+target_link_libraries(vncviewer libstdc++.a gcc gcc_eh)
+
+if(WIN32)
+  target_link_libraries(vncviewer ws2_32 comctl32 mingw32 moldname mingwex 
msvcrt kernel32 gcc)
+else()
+  target_link_libraries(vncviewer c)
+endif()
+
 install(TARGETS vncviewer DESTINATION ${BIN_DIR})
 if(UNIX)
   install(FILES vncviewer.man DESTINATION ${MAN_DIR}/man1 RENAME vncviewer.1)

Modified: trunk/vncviewer/DesktopWindow.cxx
===================================================================
--- trunk/vncviewer/DesktopWindow.cxx   2012-08-26 21:19:19 UTC (rev 4971)
+++ trunk/vncviewer/DesktopWindow.cxx   2012-08-27 07:28:08 UTC (rev 4972)
@@ -88,12 +88,42 @@
   } else
 #endif
   {
+
+    int geom_x = 0, geom_y = 0;
+    if (geometry.hasBeenSet()) {
+      int matched;
+      matched = sscanf(geometry.getValueStr(), "+%d+%d", &geom_x, &geom_y);
+      if (matched == 2) {
+       force_position(1);
+      } else {
+       int geom_w, geom_h;
+       matched = sscanf(geometry.getValueStr(), "%dx%d+%d+%d", &geom_w, 
&geom_h, &geom_x, &geom_y);
+       switch (matched) {
+       case 4:
+         force_position(1);
+         /* fall through */
+       case 2:
+         w = geom_w;
+         h = geom_h;
+       default:
+         vlog.error("Invalid geometry specified!");    
+       }
+      }
+    }
+    
     // If we are creating a window which is equal to the size on the
     // screen on X11, many WMs will treat this as a legacy fullscreen
     // request. This is not what we want. Besides, it doesn't really
     // make sense to try to create a window which is larger than the
     // available work space. 
-    size(__rfbmin(w, Fl::w()), __rfbmin(h, Fl::h()));
+    w = __rfbmin(w, Fl::w());
+    h = __rfbmin(h, Fl::h());
+
+    if (force_position()) {
+      resize(geom_x, geom_y, w, h);
+    } else {
+      size(w, h);
+    }
   }
 
   show();

Modified: trunk/vncviewer/parameters.cxx
===================================================================
--- trunk/vncviewer/parameters.cxx      2012-08-26 21:19:19 UTC (rev 4971)
+++ trunk/vncviewer/parameters.cxx      2012-08-27 07:28:08 UTC (rev 4972)
@@ -100,6 +100,8 @@
 StringParameter desktopSize("DesktopSize",
                             "Reconfigure desktop size on the server on "
                             "connect (if possible)", "");
+StringParameter geometry("geometry",
+                        "Specify size and position of viewer window", "");
 BoolParameter remoteResize("RemoteResize",
                            "Dynamically resize the remote desktop size as "
                            "the size of the local client window changes. "
@@ -155,6 +157,7 @@
 #endif // HAVE_FLTK_FULLSCREEN_SCREENS
 #endif // HAVE_FLTK_FULLSCREEN
   &desktopSize,
+  &geometry,
   &remoteResize,
   &viewOnly,
   &shared,

Modified: trunk/vncviewer/parameters.h
===================================================================
--- trunk/vncviewer/parameters.h        2012-08-26 21:19:19 UTC (rev 4971)
+++ trunk/vncviewer/parameters.h        2012-08-27 07:28:08 UTC (rev 4972)
@@ -46,6 +46,7 @@
 #endif // HAVE_FLTK_FULLSCREEN_SCREENS
 #endif // HAVE_FLTK_FULLSCREEN
 extern rfb::StringParameter desktopSize;
+extern rfb::StringParameter geometry;
 extern rfb::BoolParameter remoteResize;
 
 extern rfb::BoolParameter viewOnly;

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


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

Reply via email to