diff options
author | Antoine Jacoutot <ajacoutot@gnome.org> | 2014-04-18 00:59:45 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-05-12 07:30:22 -0400 |
commit | d3c096e0cc5efd10155438010192e4ccc93266fd (patch) | |
tree | 97229e3d26264d7b93c3415896018feaa04592ce | |
parent | da55db257c63b5930d8dcfc8301c9dd6133ec4ef (diff) | |
download | gtk+-d3c096e0cc5efd10155438010192e4ccc93266fd.tar.gz |
broadway backend: allow building on OpenBSD
On OpenBSD shm_open(3) is part of libc and there is not librt, so add an
according check.
Check if we have posix_fallocate before using it.
https://bugzilla.gnome.org/show_bug.cgi?id=728272
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | gdk/broadway/Makefile.am | 6 | ||||
-rw-r--r-- | gdk/broadway/gdkbroadway-server.c | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index b4a948707d..ca8e183eef 100644 --- a/configure.ac +++ b/configure.ac @@ -397,6 +397,11 @@ else fi AC_SUBST(DISABLE_ON_QUARTZ) +AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""]) +AC_SUBST(SHM_LIBS) + +AC_CHECK_FUNCS(posix_fallocate) + if test "x$enable_broadway_backend" = xyes; then GDK_BACKENDS="$GDK_BACKENDS broadway" cairo_backends="$cairo_backends cairo" diff --git a/gdk/broadway/Makefile.am b/gdk/broadway/Makefile.am index af1fa9783c..0f190b3402 100644 --- a/gdk/broadway/Makefile.am +++ b/gdk/broadway/Makefile.am @@ -1,5 +1,6 @@ ## Process this file with automake to produce Makefile.in include $(top_srcdir)/Makefile.decl +NULL = libgdkincludedir = $(includedir)/gtk-3.0/gdk libgdkbroadwayincludedir = $(includedir)/gtk-3.0/gdk/broadway @@ -75,7 +76,8 @@ libgdk_broadway_la_SOURCES = \ if OS_UNIX libgdk_broadway_la_LIBADD = \ - -lrt + $(SHM_LIBS) \ + $(NULL) endif broadwayd_SOURCES = \ @@ -91,7 +93,7 @@ broadwayd_SOURCES = \ if OS_WIN32 broadwayd_LDADD = $(GDK_DEP_LIBS) -lws2_32 else -broadwayd_LDADD = $(GDK_DEP_LIBS) -lrt +broadwayd_LDADD = $(GDK_DEP_LIBS) @SHM_LIBS@ endif MAINTAINERCLEANFILES = $(broadway_built_sources) diff --git a/gdk/broadway/gdkbroadway-server.c b/gdk/broadway/gdkbroadway-server.c index 55ab58bfa7..dfbb19dc4f 100644 --- a/gdk/broadway/gdkbroadway-server.c +++ b/gdk/broadway/gdkbroadway-server.c @@ -540,12 +540,14 @@ map_named_shm (char *name, gsize size) res = ftruncate (fd, size); g_assert (res != -1); +#ifdef HAVE_POSIX_FALLOCATE res = posix_fallocate (fd, 0, size); if (res != 0) { shm_unlink (name); g_error ("Not enough shared memory for window surface"); } +#endif ptr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); |