Avoid code duplication using os_create_anonymous_file() from libdecor.
This commit is contained in:
parent
24885b3810
commit
9367bb5108
@ -16,7 +16,8 @@
|
|||||||
|
|
||||||
include ../../makeinclude
|
include ../../makeinclude
|
||||||
|
|
||||||
CFLAGS_DECOR = -I. -I../.. -I../../src -I../src -fPIC -D_GNU_SOURCE -DUSE_SYSTEM_LIBDECOR=0
|
CFLAGS_DECOR = -I. -I../.. -I../../src -I../src -fPIC -D_GNU_SOURCE \
|
||||||
|
-DUSE_SYSTEM_LIBDECOR=0 -DHAVE_MEMFD_CREATE -DHAVE_MKOSTEMP -DHAVE_POSIX_FALLOCATE
|
||||||
OBJECTS = fl_libdecor.o libdecor-cairo-blur.o fl_libdecor-plugins.o \
|
OBJECTS = fl_libdecor.o libdecor-cairo-blur.o fl_libdecor-plugins.o \
|
||||||
../../src/xdg-decoration-protocol.o ../../src/xdg-shell-protocol.o \
|
../../src/xdg-decoration-protocol.o ../../src/xdg-shell-protocol.o \
|
||||||
../../src/text-input-protocol.o cursor-settings.o os-compatibility.o
|
../../src/text-input-protocol.o cursor-settings.o os-compatibility.o
|
||||||
|
@ -468,7 +468,7 @@ if (OPTION_USE_WAYLAND)
|
|||||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_SYSTEM_LIBDECOR")
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_SYSTEM_LIBDECOR")
|
||||||
else()
|
else()
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src -DLIBDECOR_PLUGIN_API_VERSION=1 -DLIBDECOR_PLUGIN_DIR=\\\"/usr/local/lib\\\" ")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src -DLIBDECOR_PLUGIN_API_VERSION=1 -DLIBDECOR_PLUGIN_DIR=\\\"/usr/local/lib\\\" ")
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SYSTEM_LIBDECOR=0")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SYSTEM_LIBDECOR=0 -DHAVE_MEMFD_CREATE -DHAVE_MKOSTEMP -DHAVE_POSIX_FALLOCATE")
|
||||||
endif (OPTION_USE_SYSTEM_LIBDECOR)
|
endif (OPTION_USE_SYSTEM_LIBDECOR)
|
||||||
|
|
||||||
if (GTK_FOUND)
|
if (GTK_FOUND)
|
||||||
|
@ -32,23 +32,13 @@
|
|||||||
|
|
||||||
extern unsigned fl_cmap[256]; // defined in fl_color.cxx
|
extern unsigned fl_cmap[256]; // defined in fl_color.cxx
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
int os_create_anonymous_file(off_t);
|
||||||
|
}
|
||||||
|
|
||||||
static int create_anonymous_file(int size, char **pshared)
|
static int create_anonymous_file(int size, char **pshared)
|
||||||
{
|
{
|
||||||
int ret;
|
int fd = os_create_anonymous_file(size);
|
||||||
int fd = memfd_create("FLTK-for-Wayland", MFD_CLOEXEC | MFD_ALLOW_SEALING);
|
|
||||||
if (fd < 0) {
|
|
||||||
Fl::fatal("memfd_create failed: %s\n", strerror(errno));
|
|
||||||
}
|
|
||||||
fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK);
|
|
||||||
do {
|
|
||||||
ret = posix_fallocate(fd, 0, size);
|
|
||||||
} while (ret == EINTR);
|
|
||||||
if (ret != 0) {
|
|
||||||
close(fd);
|
|
||||||
errno = ret;
|
|
||||||
Fl::fatal("creating anonymous file of size %d failed: %s\n", size, strerror(errno));
|
|
||||||
}
|
|
||||||
*pshared = (char*)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
*pshared = (char*)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||||
if (*pshared == MAP_FAILED) {
|
if (*pshared == MAP_FAILED) {
|
||||||
close(fd);
|
close(fd);
|
||||||
|
Loading…
Reference in New Issue
Block a user