summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2009-03-03 19:44:25 -0800
committerJeremy Huddleston <jeremyhu@freedesktop.org>2009-03-03 19:44:25 -0800
commit7dbba3a821ba839bbcf882d7276098beca677f40 (patch)
tree2d5693b418be18b02238c6cf8a5e60def07f83ee
parent177cd34645f6575c44341ed4a081e574a7297ab8 (diff)
Implement XAppleWMSendPSN()
-rw-r--r--INSTALL0
-rw-r--r--configure.ac2
-rw-r--r--src/Makefile.am4
-rw-r--r--src/applewm.c32
4 files changed, 35 insertions, 3 deletions
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index e69de29..0000000
--- a/INSTALL
+++ /dev/null
diff --git a/configure.ac b/configure.ac
index 77d5cff..c1acef7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,7 +34,7 @@ AC_PROG_CC
AC_PROG_LIBTOOL
# Check for dependencies
-PKG_CHECK_MODULES(APPLEWM, x11 xext xextproto applewmproto)
+PKG_CHECK_MODULES(APPLEWM, x11 xext xextproto [applewmproto >= 1.2])
AC_SUBST(APPLEWM_CFLAGS)
AC_SUBST(APPLEWM_LIBS)
diff --git a/src/Makefile.am b/src/Makefile.am
index 7898b40..1ba758f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,7 +3,7 @@ lib_LTLIBRARIES = libAppleWM.la
libAppleWM_la_SOURCES = \
applewm.c
-libAppleWM_la_CFLAGS = @APPLEWM_CFLAGS@ @MALLOC_ZERO_CFLAGS@
+libAppleWM_la_CFLAGS = @APPLEWM_CFLAGS@ @MALLOC_ZERO_CFLAGS@ -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks
libAppleWM_la_LIBADD = @APPLEWM_LIBS@
-libAppleWM_la_LDFLAGS = -version-info 7:0:0 -no-undefined
+libAppleWM_la_LDFLAGS = -version-info 7:0:0 -no-undefined -framework ApplicationServices
diff --git a/src/applewm.c b/src/applewm.c
index c627762..2a79998 100644
--- a/src/applewm.c
+++ b/src/applewm.c
@@ -39,6 +39,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <X11/extensions/extutil.h>
#include <stdio.h>
+#include <HIServices/Processes.h>
+
static XExtensionInfo _applewm_info_data;
static XExtensionInfo *applewm_info = &_applewm_info_data;
static char *applewm_extension_name = APPLEWMNAME;
@@ -375,6 +377,36 @@ Bool XAppleWMSetWindowLevel(dpy, id, level)
return True;
}
+Bool XAppleWMSendPSN(Display* dpy) {
+ XExtDisplayInfo *info = find_display (dpy);
+ xAppleWMSendPSNReq *req;
+ ProcessSerialNumber psn;
+ OSErr err;
+
+
+ TRACE("SendPSN...");
+ AppleWMCheckExtension (dpy, info, False);
+
+ err = GetCurrentProcess(&psn);
+
+ if(err != noErr) {
+ TRACE("SendPSN... couldn't get current Process.");
+ return False;
+ }
+
+ LockDisplay(dpy);
+ GetReq(AppleWMSendPSN, req);
+ req->reqType = info->codes->major_opcode;
+ req->wmReqType = X_AppleWMSendPSN;
+ req->psn_hi = psn.highLongOfPSN;
+ req->psn_lo = psn.lowLongOfPSN;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("SendPSN... return True");
+ return True;
+}
+
+
Bool XAppleWMSetCanQuit(dpy, state)
Display* dpy;
Bool state;