diff options
author | Jamey Sharp <jamey@minilop.net> | 2011-11-20 03:21:58 -0800 |
---|---|---|
committer | Jamey Sharp <jamey@minilop.net> | 2011-11-20 03:21:58 -0800 |
commit | 8fd86ed43310863d7c3321c007d9cf6419b8c120 (patch) | |
tree | 8936d2e6e896996b8d48fbf81b0cd95bff0ea29b /include | |
parent | c70ce992a358e22f8c69b35b64f35ee2f8eaa47c (diff) |
Reset only what the protocol requires, instead of full regeneration.no-regen
It's difficult to get regeneration correct in all the drivers,
extensions, and everywhere else it's currently required--and there's no
significant advantage to doing full regeneration. So instead, make DIX
reset exactly the things required by the protocol specification, and set
serverGeneration to a constant 1.
Eliminating all the ugly code that's conditional on serverGeneration is
left as a later exercise. This patch should simply improve reliability
when the server resets.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/dix.h | 7 | ||||
-rw-r--r-- | include/misc.h | 2 | ||||
-rw-r--r-- | include/property.h | 2 | ||||
-rw-r--r-- | include/propertyst.h | 1 | ||||
-rw-r--r-- | include/window.h | 3 |
5 files changed, 14 insertions, 1 deletions
diff --git a/include/dix.h b/include/dix.h index 34661f3b6..7a931c3ac 100644 --- a/include/dix.h +++ b/include/dix.h @@ -306,12 +306,19 @@ extern _X_EXPORT void FreeAllAtoms(void); extern _X_EXPORT void InitAtoms(void); +extern void SaveServerAtoms(void); +extern void ResetAtoms(void); + /* main.c */ extern _X_EXPORT void SetVendorRelease(int release); extern _X_EXPORT void SetVendorString(char *string); +/* devices.c */ + +extern void ResetInput(void); + /* events.c */ extern void SetMaskForEvent( diff --git a/include/misc.h b/include/misc.h index dc039113d..10970506f 100644 --- a/include/misc.h +++ b/include/misc.h @@ -357,6 +357,6 @@ typedef struct _CharInfo *CharInfoPtr; /* also in fonts/include/font.h */ #endif extern _X_EXPORT unsigned long globalSerialNumber; -extern _X_EXPORT unsigned long serverGeneration; +#define serverGeneration 1 #endif /* MISC_H */ diff --git a/include/property.h b/include/property.h index 075eb4a0d..01379ed11 100644 --- a/include/property.h +++ b/include/property.h @@ -88,4 +88,6 @@ extern _X_EXPORT int DeleteProperty( extern _X_EXPORT void DeleteAllWindowProperties( WindowPtr /*pWin*/); +extern void ResetProperties(WindowPtr /*pWin*/); + #endif /* PROPERTY_H */ diff --git a/include/propertyst.h b/include/propertyst.h index 1edd11d5d..73ccce65d 100644 --- a/include/propertyst.h +++ b/include/propertyst.h @@ -61,6 +61,7 @@ typedef struct _Property { uint32_t format; /* format of data for swapping - 8,16,32 */ uint32_t size; /* size of data in (format/8) bytes */ pointer data; /* private to client */ + unsigned int retain : 1; /* should this property be retained across server reset? */ PrivateRec *devPrivates; } PropertyRec; diff --git a/include/window.h b/include/window.h index e13598b88..1bb51e7ce 100644 --- a/include/window.h +++ b/include/window.h @@ -93,6 +93,9 @@ extern _X_EXPORT Bool CreateRootWindow( extern _X_EXPORT void InitRootWindow( WindowPtr /*pWin*/); +extern void ResetRootWindow( + WindowPtr /*pWin*/); + typedef WindowPtr (* RealChildHeadProc) (WindowPtr pWin); extern _X_EXPORT void RegisterRealChildHeadProc (RealChildHeadProc proc); |