8 #include <X11/Xproto.h>
10 #include "WindowMaker.h"
18 extern WPreferences wPreferences
;
19 extern Atom _XA_WINDOWMAKER_WM_FUNCTION
;
22 wSoundServerGrab(Window wm_win
)
31 if (XQueryTree(dpy
, wm_win
, &retRoot
, &retParent
, &lstChildren
, &numChildren
)) {
32 for (indexCount
= 1; indexCount
< numChildren
; indexCount
++) {
33 retHint
= XAllocClassHint();
39 XGetClassHint (dpy
, lstChildren
[indexCount
], retHint
);
41 if (retHint
->res_class
) {
42 if (strcmp("WMSoundServer", retHint
->res_class
)==0 ||
43 /*strcmp("WSoundServer", retHint->res_class)==0 ||*/
45 strcmp("wsoundserver", retHint
->res_name
)==0 &&
46 strcmp("DockApp", retHint
->res_class
)==0)) {
48 soundServer
= lstChildren
[indexCount
];
66 wSoundPlay(long event_sound
)
69 wSoundServerGrab(DefaultRootWindow(dpy
));
71 if(soundServer
!=None
&& !wPreferences
.no_sound
) {
72 sound_event
.xclient
.type
= ClientMessage
;
73 sound_event
.xclient
.message_type
= _XA_WINDOWMAKER_WM_FUNCTION
;
74 sound_event
.xclient
.format
= 32;
75 sound_event
.xclient
.display
= dpy
;
76 sound_event
.xclient
.window
= soundServer
;
77 sound_event
.xclient
.data
.l
[0] = event_sound
;
78 if (XSendEvent(dpy
, soundServer
, False
,
79 NoEventMask
, &sound_event
)==BadWindow
) {