summaryrefslogtreecommitdiff
path: root/examples/simple_window.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/simple_window.c')
-rw-r--r--examples/simple_window.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/examples/simple_window.c b/examples/simple_window.c
index cb12db1..4b4b552 100644
--- a/examples/simple_window.c
+++ b/examples/simple_window.c
@@ -6,7 +6,7 @@
int main(int argc, char **argv)
{
bool smoke = argc == 2 && !strcmp(argv[1], "--smoke-test");
- yasl_surface *s = yasl_surface_create("YASL input", 640, 480, YASL_SURFACE_CPU);
+ yasl_surface *s = yasl_surface_create(&(struct yasl_surface_options){.title="YASL input", .width=640, .height=480, .type=YASL_SURFACE_CPU, .flags=0});
if (!s) return 1;
double px = -100, py = -100, pressure = 0;
bool dirty = false;
@@ -29,8 +29,10 @@ int main(int argc, char **argv)
}
if (e.type == YASL_EVENT_REFRESH) dirty = true;
if (dirty) {
- int w, h;
- uint32_t *pixels = yasl_cpu_pixels(s, &w, &h);
+ struct yasl_cpu_buffer buffer;
+ int acquired = yasl_cpu_acquire(s, &buffer);
+ int w = buffer.width, h = buffer.height;
+ uint32_t *pixels = acquired == 0 ? buffer.pixels : NULL;
if (!pixels) break;
double scale = yasl_surface_get_scale(s), radius = (8 + pressure * 48) * scale;
for (int y = 0; y < h; y++) {
@@ -39,7 +41,7 @@ int main(int argc, char **argv)
pixels[(size_t)y * w + x] = dx * dx + dy * dy < radius * radius ? 0xffffc060u : 0xff203040u;
}
}
- if (!yasl_cpu_present(s)) break;
+ if ((yasl_cpu_present(s, &buffer) < 0)) break;
dirty = false;
frames++;
}