diff options
-rw-r--r-- | examples/screenshot.c | 4 | ||||
-rw-r--r-- | reduced_system_layer.c | 23 |
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; |