- don't crash during pixel format change (#522369, #551262)

This commit is contained in:
Adam Tkac 2010-03-04 16:04:37 +00:00
parent 63f2b0c9d6
commit b7e5d18f9e
3 changed files with 102 additions and 1 deletions

View File

@ -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 <atkac redhat com> 1.0.90-0.7.20100219svn3993
- don't crash during pixel format change (#522369, #551262)
* Mon Mar 01 2010 Adam Tkac <atkac redhat com> 1.0.90-0.6.20100219svn3993
- add mesa-dri-drivers and xkeyboard-config to -server Requires
- update to r3993 1.0.90 snapshot

80
tigervnc11-rh522369.patch Normal file
View File

@ -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 <rfb/Password.h>
#include <rfb/screenTypes.h>
#include <network/TcpSocket.h>
+#include <cassert>
#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

14
tigervnc11-rh551262.patch Normal file
View File

@ -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)