summaryrefslogtreecommitdiff
path: root/src/common/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/types.h')
-rw-r--r--src/common/types.h25
1 files changed, 8 insertions, 17 deletions
diff --git a/src/common/types.h b/src/common/types.h
index 3fffd47..8d00d0b 100644
--- a/src/common/types.h
+++ b/src/common/types.h
@@ -4,8 +4,9 @@
*
* All calls and callbacks use the display's opening thread (the main thread on
* Cocoa), unless explicitly documented otherwise. Userdata is borrowed; callback
- * tables and creation specs are copied. Do not recursively dispatch/flush or
- * destroy a display/loop while dispatch or a callback is active. Destroy child
+ * tables and creation specs are copied. The display drives its loop: each
+ * yasl_loop_step dispatches it. Do not recursively step or flush, or destroy a
+ * display/loop while a step or a callback is active. Destroy child
* popups before parents, surfaces before displays, displays before borrowed loops.
* Surface destruction from its own callback is supported; stop using it immediately.
*
@@ -43,7 +44,7 @@ extern "C" {
struct yasl_private_display;
struct yasl_surface;
-struct yasl_private_loop;
+struct yasl_loop;
/* Geometry */
/** A two-dimensional integer size, position, or offset; units depend on the caller. */
@@ -569,7 +570,7 @@ struct yasl_private_display_spec {
* opening fails without a more specific platform error. Explicit choices never
* fall back. Close with yasl_private_display_close() after destroying its surfaces.
*/
-struct yasl_private_display *yasl_private_display_open(struct yasl_private_loop *loop,
+struct yasl_private_display *yasl_private_display_open(struct yasl_loop *loop,
const struct yasl_private_display_spec *spec);
/**
* Read the selected backend.
@@ -592,19 +593,6 @@ void yasl_private_display_close(struct yasl_private_display *d);
* permission to perform an operation at any arbitrary moment.
*/
uint32_t yasl_private_display_caps(const struct yasl_private_display *d);
-/* Process events, waiting at most timeout_ms: zero polls, negative waits.
- * Pending input or redraw work returns immediately. Returns -1 on failure. */
-/**
- * Receive events and run ready loop sources.
- * @param d Display to dispatch.
- * @param timeout_ms Maximum wait in milliseconds: zero polls, negative waits indefinitely.
- * @return A nonnegative backend-specific work count on success, or -1 with errno
- * set on failure (EINVAL for NULL, EIO if no specific backend error is available).
- * Do not interpret the count as the number of queued input events. Pending input
- * or runnable redraw work prevents waiting. Drain input and call
- * yasl_private_display_flush() after updating application state. Do not dispatch recursively.
- */
-int yasl_private_display_dispatch(struct yasl_private_display *d, int timeout_ms);
/**
* Draw scheduled surfaces and send pending display requests.
* @param d Display, or NULL for no action.
@@ -886,6 +874,9 @@ bool yasl_private_frame_present(struct yasl_private_frame *frame,
const struct yasl_private_rect2i *rects, size_t count);
/** Coalesce a redraw request; use on the display thread. NULL is ignored. */
void yasl_private_surface_request_frame(struct yasl_surface *s);
+/** Owe s a REFRESH once the system shows its frame in flight, or at once when
+ * none is. False with errno when the fallback timer cannot start. */
+bool yasl_private_surface_request_shown_frame(struct yasl_surface *s);
/** Set drawing policy for either loop style. Returns false with errno on failure. */
bool yasl_private_surface_set_pacing(struct yasl_surface *s, yasl_private_pacing_mode mode);