static void DGAClientStateChange ( CallbackListPtr* pcbl, pointer nulldata, pointer calldata ){ NewClientInfoRec* pci = (NewClientInfoRec*) calldata; ClientPtr client = NULL; int i; for(i = 0; i < screenInfo.numScreens; i++) { if(DGAClients[i] == pci->client) { client = pci->client; break; } } if(client && ((client->clientState == ClientStateGone) || (client->clientState == ClientStateRetained))) { XDGAModeRec mode; PixmapPtr pPix; DGAClients[i] = NULL; DGASelectInput(i, NULL, 0); DGASetMode(i, 0, &mode, &pPix); if(--DGACallbackRefCount == 0) DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL); } }
static void XDGAResetProc(ExtensionEntry *extEntry) { DeleteCallback (&ClientStateCallback, DGAClientStateChange, NULL); DGACallbackRefCount = 0; DGAShutdown(); }
/*ARGSUSED*/ static void XagResetProc( ExtensionEntry* extEntry) { DeleteCallback (&ClientStateCallback, XagClientStateChange, NULL); XagCallbackRefCount = 0; while (appGrpList) XagAppGroupFree ((pointer) appGrpList, 0); }
/* static */ int ProcXagDestroy( register ClientPtr client) { AppGroupPtr pAppGrp; REQUEST (xXagDestroyReq); REQUEST_SIZE_MATCH (xXagDestroyReq); pAppGrp = (AppGroupPtr)SecurityLookupIDByType (client, (XID)stuff->app_group, RT_APPGROUP, SecurityReadAccess); if (!pAppGrp) return XagBadAppGroup; FreeResource ((XID)stuff->app_group, RT_NONE); if (--XagCallbackRefCount == 0) (void) DeleteCallback (&ClientStateCallback, XagClientStateChange, NULL); return client->noClientException; }
static void SecurityResetProc( ExtensionEntry *extEntry) { /* Unregister callbacks */ DeleteCallback(&ClientStateCallback, SecurityClientState, NULL); XaceDeleteCallback(XACE_EXT_DISPATCH, SecurityExtension, NULL); XaceDeleteCallback(XACE_RESOURCE_ACCESS, SecurityResource, NULL); XaceDeleteCallback(XACE_DEVICE_ACCESS, SecurityDevice, NULL); XaceDeleteCallback(XACE_PROPERTY_ACCESS, SecurityProperty, NULL); XaceDeleteCallback(XACE_SEND_ACCESS, SecuritySend, NULL); XaceDeleteCallback(XACE_RECEIVE_ACCESS, SecurityReceive, NULL); XaceDeleteCallback(XACE_CLIENT_ACCESS, SecurityClient, NULL); XaceDeleteCallback(XACE_EXT_ACCESS, SecurityExtension, NULL); XaceDeleteCallback(XACE_SERVER_ACCESS, SecurityServer, NULL); }
static Bool CheckSelectionCallback(void) { if (selectionEvents) { if (!SelectionCallbackRegistered) { if (!AddCallback(&SelectionCallback, XFixesSelectionCallback, NULL)) return FALSE; SelectionCallbackRegistered = TRUE; } } else { if (SelectionCallbackRegistered) { DeleteCallback(&SelectionCallback, XFixesSelectionCallback, NULL); SelectionCallbackRegistered = FALSE; } } return TRUE; }
void XagExtensionInit(INITARGS) { #if 0 ExtensionEntry* extEntry; if ((extEntry = AddExtension (XAGNAME, 0, XagNumberErrors, ProcXagDispatch, SProcXagDispatch, XagResetProc, StandardMinorOpcode))) { XagReqCode = (unsigned char)extEntry->base; XagErrorBase = extEntry->errorBase; #else if (AddExtension (XAGNAME, 0, XagNumberErrors, ProcXagDispatch, SProcXagDispatch, XagResetProc, StandardMinorOpcode)) { #endif RT_APPGROUP = CreateNewResourceType (XagAppGroupFree); } } /*ARGSUSED*/ static void XagResetProc( ExtensionEntry* extEntry) { DeleteCallback (&ClientStateCallback, XagClientStateChange, NULL); XagCallbackRefCount = 0; while (appGrpList) XagAppGroupFree ((pointer) appGrpList, 0); }
/*ARGSUSED*/ static void XFixesResetProc (ExtensionEntry *extEntry) { DeleteCallback (&ClientStateCallback, XFixesClientCallback, 0); }
/* Reset extension. Called on server shutdown. */ static void GEResetProc(ExtensionEntry *extEntry) { DeleteCallback(&ClientStateCallback, GEClientCallback, 0); EventSwapVector[GenericEvent] = NotImplemented; }
static int ProcXDGASetMode(ClientPtr client) { REQUEST(xXDGASetModeReq); xXDGASetModeReply rep; XDGAModeRec mode; xXDGAModeInfo info; PixmapPtr pPix; int size; if (stuff->screen > screenInfo.numScreens) return BadValue; REQUEST_SIZE_MATCH(xXDGASetModeReq); rep.type = X_Reply; rep.length = 0; rep.offset = 0; rep.flags = 0; rep.sequenceNumber = client->sequence; if (!DGAAvailable(stuff->screen)) return DGAErrorBase + XF86DGANoDirectVideoMode; if(DGAClients[stuff->screen] && (DGAClients[stuff->screen] != client)) return DGAErrorBase + XF86DGANoDirectVideoMode; if(!stuff->mode) { if(DGAClients[stuff->screen]) { if(--DGACallbackRefCount == 0) DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL); } DGAClients[stuff->screen] = NULL; DGASelectInput(stuff->screen, NULL, 0); DGASetMode(stuff->screen, 0, &mode, &pPix); WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep); return (client->noClientException); } if(Success != DGASetMode(stuff->screen, stuff->mode, &mode, &pPix)) return BadValue; if(!DGAClients[stuff->screen]) { if(DGACallbackRefCount++ == 0) AddCallback (&ClientStateCallback, DGAClientStateChange, NULL); } DGAClients[stuff->screen] = client; if(pPix) { if(AddResource(stuff->pid, RT_PIXMAP, (pointer)(pPix))) { pPix->drawable.id = (int)stuff->pid; rep.flags = DGA_PIXMAP_AVAILABLE; } } size = strlen(mode.name) + 1; info.byte_order = mode.byteOrder; info.depth = mode.depth; info.num = mode.num; info.bpp = mode.bitsPerPixel; info.name_size = (size + 3) & ~3L; info.vsync_num = mode.VSync_num; info.vsync_den = mode.VSync_den; info.flags = mode.flags; info.image_width = mode.imageWidth; info.image_height = mode.imageHeight; info.pixmap_width = mode.pixmapWidth; info.pixmap_height = mode.pixmapHeight; info.bytes_per_scanline = mode.bytesPerScanline; info.red_mask = mode.red_mask; info.green_mask = mode.green_mask; info.blue_mask = mode.blue_mask; info.visual_class = mode.visualClass; info.viewport_width = mode.viewportWidth; info.viewport_height = mode.viewportHeight; info.viewport_xstep = mode.xViewportStep; info.viewport_ystep = mode.yViewportStep; info.viewport_xmax = mode.maxViewportX; info.viewport_ymax = mode.maxViewportY; info.viewport_flags = mode.viewportFlags; info.reserved1 = mode.reserved1; info.reserved2 = mode.reserved2; rep.length = (sz_xXDGAModeInfo + info.name_size) >> 2; WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep); WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info)); WriteToClient(client, size, mode.name); return (client->noClientException); }
/*ARGSUSED*/ static void DamageResetProc (ExtensionEntry *extEntry) { DeleteCallback (&ClientStateCallback, DamageClientCallback, 0); }
void ClientExit(void) { DeleteCallback(&ClientStateCallback, ClientCallback, NULL); }