From 1f958ef27fa745541f643b676b96851bc467cb77 Mon Sep 17 00:00:00 2001 From: Adam Tkac Date: Mar 04 2010 16:06:07 +0000 Subject: - don't crash during pixel format change (#522369, #551262) --- diff --git a/tigervnc.spec b/tigervnc.spec index 21e8ac3..aba3fdd 100644 --- a/tigervnc.spec +++ b/tigervnc.spec @@ -2,7 +2,7 @@ Name: tigervnc Version: 1.0.90 -Release: 0.6.%{snap}%{?dist} +Release: 0.7.%{snap}%{?dist} Summary: A TigerVNC remote display system Group: User Interface/Desktops @@ -40,6 +40,8 @@ Obsoletes: tightvnc < 1.5.0-0.15.20090204svn3586 Patch0: tigervnc-102434.patch Patch4: tigervnc-cookie.patch Patch8: tigervnc-viewer-reparent.patch +Patch9: tigervnc11-rh522369.patch +Patch10: tigervnc11-rh551262.patch %description Virtual Network Computing (VNC) is a remote display system which @@ -101,6 +103,8 @@ popd %patch0 -p1 -b .102434 %patch4 -p1 -b .cookie %patch8 -p1 -b .viewer-reparent +%patch9 -p0 -b .rh522369 +%patch10 -p0 -b .rh551262 # Use newer gettext sed -i 's/AM_GNU_GETTEXT_VERSION.*/AM_GNU_GETTEXT_VERSION([0.17])/' \ @@ -238,6 +242,9 @@ fi %endif %changelog +* Thu Mar 04 2010 Adam Tkac 1.0.90-0.7.20100219svn3993 +- don't crash during pixel format change (#522369, #551262) + * Mon Mar 01 2010 Adam Tkac 1.0.90-0.6.20100219svn3993 - add mesa-dri-drivers and xkeyboard-config to -server Requires - update to r3993 1.0.90 snapshot diff --git a/tigervnc11-rh522369.patch b/tigervnc11-rh522369.patch new file mode 100644 index 0000000..717504a --- /dev/null +++ b/tigervnc11-rh522369.patch @@ -0,0 +1,80 @@ +Index: unix/vncviewer/CConn.cxx +=================================================================== +--- unix/vncviewer/CConn.cxx (revision 4003) ++++ unix/vncviewer/CConn.cxx (revision 4004) +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + + #include "TXViewport.h" + #include "DesktopWindow.h" +@@ -62,7 +63,7 @@ + encodingChange(false), sameMachine(false), fullScreen(::fullScreen), + ctrlDown(false), altDown(false), + menuKeysym(0), menu(dpy, this), options(dpy, this), about(dpy), info(dpy), +- reverseConnection(reverse), firstUpdate(true) ++ reverseConnection(reverse), firstUpdate(true), pendingUpdate(false) + { + CharArray menuKeyStr(menuKey.getData()); + menuKeysym = XStringToKeysym(menuKeyStr.buf); +@@ -306,8 +307,11 @@ + // one. We cannot do this if we're in the middle of a format change + // though. + void CConn::framebufferUpdateStart() { +- if (!formatChange) ++ if (!formatChange) { ++ pendingUpdate = true; + requestNewUpdate(); ++ } else ++ pendingUpdate = false; + } + + // framebufferUpdateEnd() is called at the end of an update. +@@ -367,7 +371,7 @@ + + // A format change prevented us from sending this before the update, + // so make sure to send it now. +- if (formatChange) ++ if (formatChange && !pendingUpdate) + requestNewUpdate(); + + // Compute new settings based on updated bandwidth values +@@ -536,8 +540,11 @@ + break; + case ID_REFRESH: + menu.unmap(); +- writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height), +- false); ++ if (!formatChange) { ++ writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height), ++ false); ++ pendingUpdate = true; ++ } + break; + case ID_F8: + menu.unmap(); +@@ -840,6 +847,10 @@ + void CConn::requestNewUpdate() + { + if (formatChange) { ++ ++ /* Catch incorrect requestNewUpdate calls */ ++ assert(pendingUpdate == false); ++ + if (fullColour) { + desktop->setPF(fullColourPF); + } else { +Index: unix/vncviewer/CConn.h +=================================================================== +--- unix/vncviewer/CConn.h (revision 4003) ++++ unix/vncviewer/CConn.h (revision 4004) +@@ -132,6 +132,7 @@ + InfoDialog info; + bool reverseConnection; + bool firstUpdate; ++ bool pendingUpdate; + }; + + #endif diff --git a/tigervnc11-rh551262.patch b/tigervnc11-rh551262.patch new file mode 100644 index 0000000..8b5d67f --- /dev/null +++ b/tigervnc11-rh551262.patch @@ -0,0 +1,14 @@ +Index: unix/tx/TXImage.cxx +=================================================================== +--- unix/tx/TXImage.cxx (revision 4002) ++++ unix/tx/TXImage.cxx (revision 4003) +@@ -164,7 +164,8 @@ + + void TXImage::updateColourMap() + { +- tig->setColourMapEntries(0, 0, 0); ++ if (tig != 0) ++ tig->setColourMapEntries(0, 0, 0); + } + + void TXImage::lookup(int index, int* r, int* g, int* b)