WM_DELETE_WINDOW does not send ClientMessage
Roland Plüss
roland at rptd.ch
Sun Jan 19 14:17:17 UTC 2020
Hi Lucien,
Depends what you call the same display. The window is created in the
render thread while event looping is done in the main thread. In both
places XOpenDisplay(getenv("DISPLAY")) is called. Is this not the same
display? If not how can I "attach" them together? It's a requirement
that the render thread creates the window while the main thread has to
handle the event loop (to my knowledge only this works).
On 1/19/20 2:43 PM, Lucien Gentis wrote:
>
> Hello Roland,
>
> While defining delAtom and calling XSetWMProtocls, you specifiy
> "display", and in your loop, you specify "pDisplay" ; is it the same
> display ?
>
> Le 19/01/2020 à 13:33, Roland Plüss a écrit :
>> I'm finishing up my software for releasing but run into a big issue. If
>> I use window mode instead of full-screen mode the user should be able to
>> close the window using the X button. I can prevent this from happening
>> using this code:
>>
>> Atom delAtom = XInternAtom( display, "WM_DELETE_WINDOW", False );
>> XSetWMProtocols( display, pWindow, &delAtom, 1 );
>>
>> The window will not be destroyed when X is pressed so I think this
>> worked. The problem is though that I do not received ClientMessage and
>> thus I am unable to close the window. This is the event loop:
>>
>> XEvent event;
>> while( XPending( pDisplay ) ){
>> XNextEvent( pDisplay, &event );
>> log("Event %d", event.type);
>> switch( event.type ){
>> ...
>> case ClientMessage:
>> log("Quit Request Received");
>> break;
>> }
>> }
>>
>> Window is created like this:
>>
>> #define BASIC_EVENT_MASK ( StructureNotifyMask | ExposureMask |
>> PropertyChangeMask \
>> | EnterWindowMask | LeaveWindowMask |
>> KeyPressMask \
>> | KeyReleaseMask | KeymapStateMask |
>> FocusChangeMask )
>>
>> #define NOT_PROPAGATE_MASK ( KeyPressMask | KeyReleaseMask |
>> ButtonPressMask \
>> | ButtonReleaseMask | PointerMotionMask |
>> ButtonMotionMask )
>>
>> XSetWindowAttributes swa;
>> swa.colormap = colMap;
>> swa.backing_store = NotUseful;
>> swa.border_pixel = 0;
>> swa.event_mask = BASIC_EVENT_MASK;
>> swa.do_not_propagate_mask = NOT_PROPAGATE_MASK;
>> swa.override_redirect = False;
>> swa.save_under = False;
>> swa.cursor = 0;
>> swa.bit_gravity = ForgetGravity;
>> swa.win_gravity = NorthWestGravity;
>>
>> Any idea what else I need to do to get this working?
>>
>>
>> _______________________________________________
>> xorg at lists.x.org: X.Org support
>> Archives: http://lists.freedesktop.org/archives/xorg
>> Info: https://lists.x.org/mailman/listinfo/xorg
>> Your subscription address: %(user_address)s
>
> _______________________________________________
> xorg at lists.x.org: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: https://lists.x.org/mailman/listinfo/xorg
> Your subscription address: %(user_address)s
--
Mit freundlichen Grüssen
Plüss Roland
Leader und Head Programmer
- Game: Epsylon ( http://www.indiedb.com/games/epsylon )
- Game Engine: Drag[en]gine ( http://www.indiedb.com/engines/dragengine
, http://dragengine.rptd.ch/wiki )
- Sowie verschiedene Blender Export-Skripts und Game-Tools
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg/attachments/20200119/a2837372/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: OpenPGP digital signature
URL: <https://lists.x.org/archives/xorg/attachments/20200119/a2837372/attachment.sig>
More information about the xorg
mailing list