diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-07-23 17:42:08 -0400 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2008-01-20 01:36:53 -0500 |
| commit | ebce321a72331697287838b864735e7b81e60b33 (patch) | |
| tree | 7c6d33aedc34f4f489b7d842ef6c508f2425bbe4 /obt | |
| parent | 98dda05c4ae1372391a26fca4c5a8b0551bbb4f9 (diff) | |
look mom, I made an openbox toolkit
Diffstat (limited to 'obt')
| -rw-r--r-- | obt/instance.c | 56 | ||||
| -rw-r--r-- | obt/obt-4.0.pc | 14 | ||||
| -rw-r--r-- | obt/obt-4.0.pc.in | 14 | ||||
| -rw-r--r-- | obt/obt.h | 46 |
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*/ |
