diff --git a/Xext/xvmain.c b/Xext/xvmain.c index b9c2a59ee6..367eaa7cd9 100644 --- a/Xext/xvmain.c +++ b/Xext/xvmain.c @@ -75,6 +75,7 @@ SOFTWARE. #include +#include #include #include #include @@ -120,7 +121,6 @@ Bool noXvExtension = FALSE; static x_server_generation_t XvExtensionGeneration = 0; static x_server_generation_t XvScreenGeneration = 0; -static x_server_generation_t XvResourceGeneration = 0; int XvReqCode; static int XvEventBase; @@ -203,15 +203,15 @@ XvExtensionInit(void) } } +static bool resources_initialized = false; + +/* can be called from different angles */ static Bool CreateResourceTypes(void) { - - if (XvResourceGeneration == serverGeneration) + if (resources_initialized) return TRUE; - XvResourceGeneration = serverGeneration; - if (!(XvRTPort = CreateNewResourceType(XvdiDestroyPort, "XvRTPort"))) { ErrorF("CreateResourceTypes: failed to allocate port resource.\n"); return FALSE; @@ -252,7 +252,6 @@ CreateResourceTypes(void) } return TRUE; - } static void XvWindowDestroy(CallbackListPtr *pcbl, ScreenPtr pScreen, WindowPtr pWin)