Re: Standardizing _METACITY_UPDATE_COUNTER
- From: gtg990h mail gatech edu
- To: wm-spec-list gnome org
- Cc: gtk-devel-list gnome org
- Subject: Re: Standardizing _METACITY_UPDATE_COUNTER
- Date: Mon, 23 Feb 2004 23:13:07 -0500
Okay, let me try to specify this somewhat more formally. I understand, after
Soeren Sandmann's last message, why it makes sense to let the client increment
the counter by more than one for each resize step. I also think I understand
Owen Taylor's concern about being able to keep track of the client's location
in the update stream. Further, making the protocol two-way might make it easier
to double-buffer, depending on how double-buffering is done.
I tried to follow the formatting of the wm-spec, to make things easier to
understand:
_NET_SYNC_REQUEST (client message)
window = top-level window being resized
message_type = _NET_SYNC_REQUEST
format = 32
data.l[0] = low-bits of counter value
data.l[1] = high-bits of counter value
_NET_SYNC_ACKNOWLEDGE (client message)
window = top-level window being resized
message_type = _NET_SYNC_ACKNOWLEDGE
format = 32
data.l[0] = low-bits of counter value
data.l[1] = high-bits of counter value
_NET_WM_SYNC_SUPPORT (client window property)
Integer specifying level of support for synchronization.
- 0: No support
- 1: Synchronization during resize
Client behavior:
At startup, set the _NET_WM_SYNC_SUPPORT property to indicate support for
synchronization.
On receiving _NET_SYNC_REQUEST, set internal flag specifying that the next
ConfigureNotify event should be acknowledged with a _NET_SYNC_ACKNOWLEDGE
client message.
On receiving ConfigureNotify, compress any number of ConfigureNotify and
Expose events in queue. Handle all drawing resulting from those events.
Send the window manager a _NET_SYNC_ACKNOWLEDGE client message with the
counter set to the value specified in the latest _NET_SYNC_REQUEST message.
Window manager behavior:
During resize, send _NET_SYNC_REQUEST before calling XMoveResizeWindow.
The counter value specified in the message should be 1 + the number of
NET_SYNC_REQUEST messages the window manager has sent so far to the
client window. Do not send another _NET_SYNC_REQUEST, or call
XMoveResizeWindow until either a timeout expires, or a
_NET_SYNC_ACKNOWLEDGE is received.
If the resize timeout expires, send another _NET_SYNC_REQUEST followed by
calling XMoveResizeWindow.
Sincerely,
Rayiner Hashem
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]