Partial redundancy elimination in PropertyNotify generation.
This commit is contained in:
		
							parent
							
								
									0f91abd5c6
								
							
						
					
					
						commit
						7da38bb6a1
					
				|  | @ -91,6 +91,19 @@ PrintPropertys(WindowPtr pWin) | |||
| } | ||||
| #endif | ||||
| 
 | ||||
| static void | ||||
| deliverPropertyNotifyEvent(WindowPtr pWin, int state, Atom atom) | ||||
| { | ||||
|     xEvent event; | ||||
| 
 | ||||
|     event.u.u.type = PropertyNotify; | ||||
|     event.u.property.window = pWin->drawable.id; | ||||
|     event.u.property.state = state; | ||||
|     event.u.property.atom = atom; | ||||
|     event.u.property.time = currentTime.milliseconds; | ||||
|     DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
| } | ||||
| 
 | ||||
| int | ||||
| ProcRotateProperties(ClientPtr client) | ||||
| { | ||||
|  | @ -100,7 +113,6 @@ ProcRotateProperties(ClientPtr client) | |||
|     Atom * atoms; | ||||
|     PropertyPtr * props;               /* array of pointer */ | ||||
|     PropertyPtr pProp; | ||||
|     xEvent event; | ||||
| 
 | ||||
|     REQUEST_FIXED_SIZE(xRotatePropertiesReq, stuff->nAtoms << 2); | ||||
|     UpdateCurrentTime(); | ||||
|  | @ -157,15 +169,8 @@ found: | |||
|             delta += stuff->nAtoms; | ||||
|     	for (i = 0; i < stuff->nAtoms; i++) | ||||
|  	{ | ||||
| 	    /* Generate a PropertyNotify event for each property whose value
 | ||||
| 		is changed in the order in which they appear in the request. */ | ||||
|   | ||||
|  	    event.u.u.type = PropertyNotify; | ||||
|             event.u.property.window = pWin->drawable.id; | ||||
|     	    event.u.property.state = PropertyNewValue; | ||||
| 	    event.u.property.atom = props[i]->propertyName;	 | ||||
| 	    event.u.property.time = currentTime.milliseconds; | ||||
| 	    DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
| 	    deliverPropertyNotifyEvent(pWin, PropertyNewValue, | ||||
| 				       props[i]->propertyName); | ||||
|   | ||||
|             props[i]->propertyName = atoms[(i + delta) % stuff->nAtoms]; | ||||
| 	} | ||||
|  | @ -243,7 +248,6 @@ ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, | |||
|                      Bool sendevent) | ||||
| { | ||||
|     PropertyPtr pProp; | ||||
|     xEvent event; | ||||
|     int sizeInBytes; | ||||
|     int totalSize; | ||||
|     pointer data; | ||||
|  | @ -338,15 +342,10 @@ ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, | |||
|             pProp->size += len; | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
|     if (sendevent) | ||||
|     { | ||||
| 	event.u.u.type = PropertyNotify; | ||||
| 	event.u.property.window = pWin->drawable.id; | ||||
| 	event.u.property.state = PropertyNewValue; | ||||
| 	event.u.property.atom = pProp->propertyName; | ||||
| 	event.u.property.time = currentTime.milliseconds; | ||||
| 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
|     } | ||||
| 	deliverPropertyNotifyEvent(pWin, PropertyNewValue, pProp->propertyName); | ||||
| 
 | ||||
|     return(Success); | ||||
| } | ||||
| 
 | ||||
|  | @ -354,7 +353,6 @@ int | |||
| DeleteProperty(WindowPtr pWin, Atom propName) | ||||
| { | ||||
|     PropertyPtr pProp, prevProp; | ||||
|     xEvent event; | ||||
| 
 | ||||
|     if (!(pProp = wUserProps (pWin))) | ||||
| 	return(Success); | ||||
|  | @ -377,12 +375,7 @@ DeleteProperty(WindowPtr pWin, Atom propName) | |||
|         { | ||||
|             prevProp->next = pProp->next; | ||||
|         } | ||||
| 	event.u.u.type = PropertyNotify; | ||||
| 	event.u.property.window = pWin->drawable.id; | ||||
| 	event.u.property.state = PropertyDelete; | ||||
|         event.u.property.atom = pProp->propertyName; | ||||
| 	event.u.property.time = currentTime.milliseconds; | ||||
| 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
| 	deliverPropertyNotifyEvent(pWin, PropertyDelete, pProp->propertyName); | ||||
| 	xfree(pProp->data); | ||||
|         xfree(pProp); | ||||
|     } | ||||
|  | @ -393,17 +386,11 @@ void | |||
| DeleteAllWindowProperties(WindowPtr pWin) | ||||
| { | ||||
|     PropertyPtr pProp, pNextProp; | ||||
|     xEvent event; | ||||
| 
 | ||||
|     pProp = wUserProps (pWin); | ||||
|     while (pProp) | ||||
|     { | ||||
| 	event.u.u.type = PropertyNotify; | ||||
| 	event.u.property.window = pWin->drawable.id; | ||||
| 	event.u.property.state = PropertyDelete; | ||||
| 	event.u.property.atom = pProp->propertyName; | ||||
| 	event.u.property.time = currentTime.milliseconds; | ||||
| 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
| 	deliverPropertyNotifyEvent(pWin, PropertyDelete, pProp->propertyName); | ||||
| 	pNextProp = pProp->next; | ||||
|         xfree(pProp->data); | ||||
|         xfree(pProp); | ||||
|  | @ -537,16 +524,7 @@ ProcGetProperty(ClientPtr client) | |||
|     reply.propertyType = pProp->type; | ||||
| 
 | ||||
|     if (stuff->delete && (reply.bytesAfter == 0)) | ||||
|     { /* send the event */ | ||||
| 	xEvent event; | ||||
| 
 | ||||
| 	event.u.u.type = PropertyNotify; | ||||
| 	event.u.property.window = pWin->drawable.id; | ||||
| 	event.u.property.state = PropertyDelete; | ||||
| 	event.u.property.atom = pProp->propertyName; | ||||
| 	event.u.property.time = currentTime.milliseconds; | ||||
| 	DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); | ||||
|     } | ||||
| 	deliverPropertyNotifyEvent(pWin, PropertyDelete, pProp->propertyName); | ||||
| 
 | ||||
|     WriteReplyToClient(client, sizeof(xGenericReply), &reply); | ||||
|     if (len) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue