summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJamey Sharp <jamey@minilop.net>2011-11-20 03:21:58 -0800
committerJamey Sharp <jamey@minilop.net>2011-11-20 03:21:58 -0800
commit8fd86ed43310863d7c3321c007d9cf6419b8c120 (patch)
tree8936d2e6e896996b8d48fbf81b0cd95bff0ea29b /include
parentc70ce992a358e22f8c69b35b64f35ee2f8eaa47c (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.h7
-rw-r--r--include/misc.h2
-rw-r--r--include/property.h2
-rw-r--r--include/propertyst.h1
-rw-r--r--include/window.h3
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);