summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2025-01-20 04:59:56 +0100
committerMitya Selivanov <automainint@guattari.tech>2025-01-20 04:59:56 +0100
commitcf6b850591e411546b8395bcc79e57e551c1df08 (patch)
tree7b4fa8eef2c7e0f44413606b0d4b382de82ec6d0
parent0a3e59f645c0a67a97e9079e10e632e7120cecfd (diff)
downloadreduced_system_layer-cf6b850591e411546b8395bcc79e57e551c1df08.zip
Use incremental id for shared memory file
-rw-r--r--examples/screenshot.c4
-rw-r--r--reduced_system_layer.c23
2 files changed, 11 insertions, 16 deletions
diff --git a/examples/screenshot.c b/examples/screenshot.c
index ebadc99..33bbe99 100644
--- a/examples/screenshot.c
+++ b/examples/screenshot.c
@@ -10,9 +10,9 @@ void update_and_render_frame(void) {
has_screenshot = 1;
}
- p_wait_events();
+ p_handle_events();
- draw_pixels((Brush) {0}, 0, 0, g_platform.real_width, g_platform.real_height, (Pixel_Buffer) {
+ draw_pixels((Brush) { .quick = 1, }, 0, 0, g_platform.real_width, g_platform.real_height, (Pixel_Buffer) {
.width = width,
.height = height,
.stride = width,
diff --git a/reduced_system_layer.c b/reduced_system_layer.c
index 544628a..29087f3 100644
--- a/reduced_system_layer.c
+++ b/reduced_system_layer.c
@@ -1644,26 +1644,21 @@ typedef struct {
} WL_Output_;
static i32 anonymous_shm_open(void) {
- c8 name[] = "scr_XXXXXX";
- i32 retries = 100;
-
- do {
- --retries;
-
- struct timespec ts;
- clock_gettime(CLOCK_REALTIME, &ts);
- u64 r = ts.tv_nsec;
- for (int i = 0; i < 6; ++i) {
- name[sizeof name - 7 + i] = 'A' + (r&15) + (r&16) * 2;
- r >>= 5;
- }
+ c8 name[13] = "scr_XXXXXX";
+ i32 retries = 1000000;
+
+ for (i32 i = 0; i < retries; ++i) {
+ snprintf(name + 4, 7, "%06d", i);
i32 fd = shm_open(name, O_RDWR | O_CREAT | O_EXCL, 0600);
if (fd >= 0) {
shm_unlink(name);
return fd;
}
- } while (retries > 0 && errno == EEXIST);
+
+ if (errno != EEXIST)
+ break;
+ }
LOG_ERROR("shm_open failed.\n");
return -1;