mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-25 22:25:58 +01:00
Use _POSIX_C_SOURCE, use shm_open
This commit is contained in:
parent
d7b010024a
commit
2d0c5ec78e
18 changed files with 32 additions and 61 deletions
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#define _POSIX_C_SOURCE 199309L
|
#define _POSIX_C_SOURCE 199309L
|
||||||
#include <libavformat/avformat.h>
|
#include <libavformat/avformat.h>
|
||||||
#include <libavutil/display.h>
|
#include <libavutil/display.h>
|
||||||
|
|
|
@ -55,7 +55,7 @@ examples = {
|
||||||
},
|
},
|
||||||
'screenshot': {
|
'screenshot': {
|
||||||
'src': 'screenshot.c',
|
'src': 'screenshot.c',
|
||||||
'dep': [wayland_client, wlr_protos, wlroots],
|
'dep': [wayland_client, wlr_protos, rt],
|
||||||
},
|
},
|
||||||
'idle': {
|
'idle': {
|
||||||
'src': 'idle.c',
|
'src': 'idle.c',
|
||||||
|
@ -96,7 +96,7 @@ examples = {
|
||||||
},
|
},
|
||||||
'screencopy': {
|
'screencopy': {
|
||||||
'src': 'screencopy.c',
|
'src': 'screencopy.c',
|
||||||
'dep': [libpng, wayland_client, wlr_protos, wlroots],
|
'dep': [libpng, wayland_client, wlr_protos, rt],
|
||||||
},
|
},
|
||||||
'toplevel-decoration': {
|
'toplevel-decoration': {
|
||||||
'src': 'toplevel-decoration.c',
|
'src': 'toplevel-decoration.c',
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#define _POSIX_C_SOURCE 200112L
|
#define _POSIX_C_SOURCE 200112L
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
* DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200112L
|
||||||
#define _POSIX_C_SOURCE 199309L
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
@ -65,12 +64,17 @@ static const struct format formats[] = {
|
||||||
{WL_SHM_FORMAT_ABGR8888, false},
|
{WL_SHM_FORMAT_ABGR8888, false},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int backingfile(off_t size) {
|
static struct wl_buffer *create_shm_buffer(enum wl_shm_format fmt,
|
||||||
char template[] = "/tmp/wlroots-shared-XXXXXX";
|
int width, int height, int stride, void **data_out) {
|
||||||
int fd = mkstemp(template);
|
int size = stride * height;
|
||||||
|
|
||||||
|
const char shm_name[] = "/wlroots-screencopy";
|
||||||
|
int fd = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
return -1;
|
fprintf(stderr, "shm_open failed\n");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
shm_unlink(shm_name);
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
while ((ret = ftruncate(fd, size)) == EINTR) {
|
while ((ret = ftruncate(fd, size)) == EINTR) {
|
||||||
|
@ -78,20 +82,7 @@ static int backingfile(off_t size) {
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
close(fd);
|
close(fd);
|
||||||
return -1;
|
fprintf(stderr, "ftruncate failed\n");
|
||||||
}
|
|
||||||
|
|
||||||
unlink(template);
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct wl_buffer *create_shm_buffer(enum wl_shm_format fmt,
|
|
||||||
int width, int height, int stride, void **data_out) {
|
|
||||||
int size = stride * height;
|
|
||||||
|
|
||||||
int fd = backingfile(size);
|
|
||||||
if (fd < 0) {
|
|
||||||
fprintf(stderr, "creating a buffer file for %d B failed: %m\n", size);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
* DEALINGS IN THE SOFTWARE.
|
* DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200112L
|
||||||
#define _POSIX_C_SOURCE 199309L
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
@ -35,7 +34,6 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <wayland-client.h>
|
#include <wayland-client.h>
|
||||||
#include <wlr/util/log.h>
|
|
||||||
#include "screenshooter-client-protocol.h"
|
#include "screenshooter-client-protocol.h"
|
||||||
|
|
||||||
static struct wl_shm *shm = NULL;
|
static struct wl_shm *shm = NULL;
|
||||||
|
@ -111,12 +109,18 @@ static const struct wl_registry_listener registry_listener = {
|
||||||
.global_remove = handle_global_remove,
|
.global_remove = handle_global_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int backingfile(off_t size) {
|
static struct wl_buffer *create_shm_buffer(int width, int height,
|
||||||
char template[] = "/tmp/wlroots-shared-XXXXXX";
|
void **data_out) {
|
||||||
int fd = mkstemp(template);
|
int stride = width * 4;
|
||||||
|
int size = stride * height;
|
||||||
|
|
||||||
|
const char shm_name[] = "/wlroots-screenshot";
|
||||||
|
int fd = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
return -1;
|
fprintf(stderr, "shm_open failed\n");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
shm_unlink(shm_name);
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
while ((ret = ftruncate(fd, size)) == EINTR) {
|
while ((ret = ftruncate(fd, size)) == EINTR) {
|
||||||
|
@ -124,21 +128,7 @@ static int backingfile(off_t size) {
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
close(fd);
|
close(fd);
|
||||||
return -1;
|
fprintf(stderr, "ftruncate failed\n");
|
||||||
}
|
|
||||||
|
|
||||||
unlink(template);
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct wl_buffer *create_shm_buffer(int width, int height,
|
|
||||||
void **data_out) {
|
|
||||||
int stride = width * 4;
|
|
||||||
int size = stride * height;
|
|
||||||
|
|
||||||
int fd = backingfile(size);
|
|
||||||
if (fd < 0) {
|
|
||||||
fprintf(stderr, "creating a buffer file for %d B failed: %m\n", size);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,8 +190,6 @@ static void write_image(const char *filename, int width, int height,
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
wlr_log_init(WLR_DEBUG, NULL);
|
|
||||||
|
|
||||||
struct wl_display * display = wl_display_connect(NULL);
|
struct wl_display * display = wl_display_connect(NULL);
|
||||||
if (display == NULL) {
|
if (display == NULL) {
|
||||||
fprintf(stderr, "failed to create display: %m\n");
|
fprintf(stderr, "failed to create display: %m\n");
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 500
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _XOPEN_SOURCE 500
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
// for SOCK_CLOEXEC
|
// for SOCK_CLOEXEC
|
||||||
#define __BSD_VISIBLE 1
|
#define __BSD_VISIBLE 1
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#define _XOPEN_SOURCE 700
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
// for SOCK_CLOEXEC
|
// for SOCK_CLOEXEC
|
||||||
|
|
Loading…
Reference in a new issue