mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04: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 | ||||
| #include <libavformat/avformat.h> | ||||
| #include <libavutil/display.h> | ||||
|  |  | |||
|  | @ -55,7 +55,7 @@ examples = { | |||
| 	}, | ||||
| 	'screenshot': { | ||||
| 		'src': 'screenshot.c', | ||||
| 		'dep': [wayland_client, wlr_protos, wlroots], | ||||
| 		'dep': [wayland_client, wlr_protos, rt], | ||||
| 	}, | ||||
| 	'idle': { | ||||
| 		'src': 'idle.c', | ||||
|  | @ -96,7 +96,7 @@ examples = { | |||
| 	}, | ||||
| 	'screencopy': { | ||||
| 		'src': 'screencopy.c', | ||||
| 		'dep': [libpng, wayland_client, wlr_protos, wlroots], | ||||
| 		'dep': [libpng, wayland_client, wlr_protos, rt], | ||||
| 	}, | ||||
| 	'toplevel-decoration': { | ||||
| 		'src': 'toplevel-decoration.c', | ||||
|  |  | |||
|  | @ -1,5 +1,4 @@ | |||
| #define _POSIX_C_SOURCE 200112L | ||||
| #define _XOPEN_SOURCE 700 | ||||
| #include <GLES2/gl2.h> | ||||
| #include <limits.h> | ||||
| #include <math.h> | ||||
|  |  | |||
|  | @ -21,8 +21,7 @@ | |||
|  * DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 199309L | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <limits.h> | ||||
|  | @ -65,12 +64,17 @@ static const struct format formats[] = { | |||
| 	{WL_SHM_FORMAT_ABGR8888, false}, | ||||
| }; | ||||
| 
 | ||||
| static int backingfile(off_t size) { | ||||
| 	char template[] = "/tmp/wlroots-shared-XXXXXX"; | ||||
| 	int fd = mkstemp(template); | ||||
| 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; | ||||
| 
 | ||||
| 	const char shm_name[] = "/wlroots-screencopy"; | ||||
| 	int fd = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, 0); | ||||
| 	if (fd < 0) { | ||||
| 		return -1; | ||||
| 		fprintf(stderr, "shm_open failed\n"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	shm_unlink(shm_name); | ||||
| 
 | ||||
| 	int ret; | ||||
| 	while ((ret = ftruncate(fd, size)) == EINTR) { | ||||
|  | @ -78,20 +82,7 @@ static int backingfile(off_t size) { | |||
| 	} | ||||
| 	if (ret < 0) { | ||||
| 		close(fd); | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	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); | ||||
| 		fprintf(stderr, "ftruncate failed\n"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,8 +21,7 @@ | |||
|  * DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 199309L | ||||
| #define _POSIX_C_SOURCE 200112L | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <limits.h> | ||||
|  | @ -35,7 +34,6 @@ | |||
| #include <sys/wait.h> | ||||
| #include <unistd.h> | ||||
| #include <wayland-client.h> | ||||
| #include <wlr/util/log.h> | ||||
| #include "screenshooter-client-protocol.h" | ||||
| 
 | ||||
| static struct wl_shm *shm = NULL; | ||||
|  | @ -111,12 +109,18 @@ static const struct wl_registry_listener registry_listener = { | |||
| 	.global_remove = handle_global_remove, | ||||
| }; | ||||
| 
 | ||||
| static int backingfile(off_t size) { | ||||
| 	char template[] = "/tmp/wlroots-shared-XXXXXX"; | ||||
| 	int fd = mkstemp(template); | ||||
| static struct wl_buffer *create_shm_buffer(int width, int height, | ||||
| 		void **data_out) { | ||||
| 	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) { | ||||
| 		return -1; | ||||
| 		fprintf(stderr, "shm_open failed\n"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	shm_unlink(shm_name); | ||||
| 
 | ||||
| 	int ret; | ||||
| 	while ((ret = ftruncate(fd, size)) == EINTR) { | ||||
|  | @ -124,21 +128,7 @@ static int backingfile(off_t size) { | |||
| 	} | ||||
| 	if (ret < 0) { | ||||
| 		close(fd); | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	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); | ||||
| 		fprintf(stderr, "ftruncate failed\n"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -200,8 +190,6 @@ static void write_image(const char *filename, int width, int height, | |||
| } | ||||
| 
 | ||||
| int main(int argc, char *argv[]) { | ||||
| 	wlr_log_init(WLR_DEBUG, NULL); | ||||
| 
 | ||||
| 	struct wl_display * display = wl_display_connect(NULL); | ||||
| 	if (display == NULL) { | ||||
| 		fprintf(stderr, "failed to create display: %m\n"); | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <strings.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 500 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <wayland-server.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ | |||
|  * SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #define _XOPEN_SOURCE 500 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #include <assert.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <assert.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #include <assert.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #include <assert.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdlib.h> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _POSIX_C_SOURCE 200809L | ||||
| #ifdef __FreeBSD__ | ||||
| // for SOCK_CLOEXEC
 | ||||
| #define __BSD_VISIBLE 1 | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #define _XOPEN_SOURCE 700 | ||||
| #define _DEFAULT_SOURCE | ||||
| #ifdef __FreeBSD__ | ||||
| // for SOCK_CLOEXEC
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 emersion
						emersion