summaryrefslogtreecommitdiff
path: root/obt
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-07-23 17:42:08 -0400
committerDana Jansens <danakj@orodu.net>2008-01-20 01:36:53 -0500
commitebce321a72331697287838b864735e7b81e60b33 (patch)
tree7c6d33aedc34f4f489b7d842ef6c508f2425bbe4 /obt
parent98dda05c4ae1372391a26fca4c5a8b0551bbb4f9 (diff)
look mom, I made an openbox toolkit
Diffstat (limited to 'obt')
-rw-r--r--obt/instance.c56
-rw-r--r--obt/obt-4.0.pc14
-rw-r--r--obt/obt-4.0.pc.in14
-rw-r--r--obt/obt.h46
4 files changed, 130 insertions, 0 deletions
diff --git a/obt/instance.c b/obt/instance.c
new file mode 100644
index 00000000..8299eb85
--- /dev/null
+++ b/obt/instance.c
@@ -0,0 +1,56 @@
+#include "obt/obt.h"
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+struct _ObtInstance
+{
+ gint ref;
+ Display *d;
+};
+
+ObtInstance* obt_instance_new(const char *display_name)
+{
+ gchar *n;
+ Display *d;
+ ObtInstance *inst = NULL;
+
+ n = display_name ? g_strdup(display_name) : NULL;
+ d = XOpenDisplay(n);
+ if (d) {
+ if (fcntl(ConnectionNumber(d), F_SETFD, 1) == -1)
+ g_message("Failed to set display as close-on-exec");
+
+ inst = g_new(ObtInstance, 1);
+ inst->ref = 1;
+ inst->d = d;
+ }
+ g_free(n);
+
+ return inst;
+}
+
+void obt_instance_ref(ObtInstance *inst)
+{
+ ++inst->ref;
+}
+
+void obt_instance_unref(ObtInstance *inst)
+{
+ if (inst && --inst->ref == 0) {
+ XCloseDisplay(inst->d);
+ obt_free0(inst, ObtInstance, 1);
+ }
+}
+
+Display* obt_display(const ObtInstance *inst)
+{
+ return inst->d;
+}
diff --git a/obt/obt-4.0.pc b/obt/obt-4.0.pc
new file mode 100644
index 00000000..34aad6dc
--- /dev/null
+++ b/obt/obt-4.0.pc
@@ -0,0 +1,14 @@
+prefix=/opt/openbox
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+xcflags=
+xlibs= -lSM -lICE -lX11
+
+Name: ObRender
+Description: Openbox Toolkit Library
+Version: 3.999.0
+Requires: glib-2.0
+Libs: -L${libdir} -lobrender ${xlibs}
+Cflags: -I${includedir}/openbox/3.4 ${xcflags}
diff --git a/obt/obt-4.0.pc.in b/obt/obt-4.0.pc.in
new file mode 100644
index 00000000..1d2b6685
--- /dev/null
+++ b/obt/obt-4.0.pc.in
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+xcflags=@X_CFLAGS@
+xlibs=@X_LIBS@
+
+Name: ObRender
+Description: Openbox Toolkit Library
+Version: @VERSION@
+Requires: glib-2.0
+Libs: -L${libdir} -lobrender ${xlibs}
+Cflags: -I${includedir}/openbox/@OB_VERSION@ ${xcflags}
diff --git a/obt/obt.h b/obt/obt.h
new file mode 100644
index 00000000..7fb59d2c
--- /dev/null
+++ b/obt/obt.h
@@ -0,0 +1,46 @@
+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
+
+ obt.h for the Openbox window manager
+ Copyright (c) 2007 Dana Jansens
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ See the COPYING file for a copy of the GNU General Public License.
+*/
+
+#ifndef __obt_h
+#define __obt_h
+
+#include <X11/Xlib.h>
+#include <glib.h>
+
+#ifdef HAVE_STRING_H
+# include <string.h> /* for memset() */
+#endif
+
+G_BEGIN_DECLS
+
+typedef struct _ObtInstance ObtInstance;
+
+/* Instance funcs */
+ObtInstance* obt_instance_new (const char *display_name);
+void obt_instance_ref (ObtInstance *inst);
+void obt_instance_unref (ObtInstance *inst);
+
+Display* obt_display (const ObtInstance *inst);
+
+/* Util funcs */
+#define obt_free g_free
+#define obt_free0(p, type, num) memset((p), 0, sizeof(type) * (num)), g_free(p)
+
+G_END_DECLS
+
+#endif /*__obt_h*/