commit 08c484f46f130aa7e590ef4bcb39d2ceed7160f6
parent 6d7b1321db54155cf78305dbafdcfc7de9b78415
Author: Alexander Orzechowski <orzechowski.alexander@gmail.com>
Date: Fri, 4 Mar 2022 20:38:04 -0500
transaction: ready signals will return success bools
Diffstat:
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/include/sway/desktop/transaction.h b/include/sway/desktop/transaction.h
@@ -1,6 +1,7 @@
#ifndef _SWAY_TRANSACTION_H
#define _SWAY_TRANSACTION_H
#include <stdint.h>
+#include <stdbool.h>
/**
* Transactions enable us to perform atomic layout updates.
@@ -38,8 +39,11 @@ void transaction_commit_dirty_client(void);
* Notify the transaction system that a view is ready for the new layout.
*
* When all views in the transaction are ready, the layout will be applied.
+ *
+ * A success boolean is returned denoting that this part of the transaction is
+ * ready.
*/
-void transaction_notify_view_ready_by_serial(struct sway_view *view,
+bool transaction_notify_view_ready_by_serial(struct sway_view *view,
uint32_t serial);
/**
@@ -47,8 +51,11 @@ void transaction_notify_view_ready_by_serial(struct sway_view *view,
* identifying the instruction by geometry rather than by serial.
*
* This is used by xwayland views, as they don't have serials.
+ *
+ * A success boolean is returned denoting that this part of the transaction is
+ * ready.
*/
-void transaction_notify_view_ready_by_geometry(struct sway_view *view,
+bool transaction_notify_view_ready_by_geometry(struct sway_view *view,
double x, double y, int width, int height);
#endif
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c
@@ -499,16 +499,18 @@ static void set_instruction_ready(
transaction_progress();
}
-void transaction_notify_view_ready_by_serial(struct sway_view *view,
+bool transaction_notify_view_ready_by_serial(struct sway_view *view,
uint32_t serial) {
struct sway_transaction_instruction *instruction =
view->container->node.instruction;
if (instruction != NULL && instruction->serial == serial) {
set_instruction_ready(instruction);
+ return true;
}
+ return false;
}
-void transaction_notify_view_ready_by_geometry(struct sway_view *view,
+bool transaction_notify_view_ready_by_geometry(struct sway_view *view,
double x, double y, int width, int height) {
struct sway_transaction_instruction *instruction =
view->container->node.instruction;
@@ -518,7 +520,9 @@ void transaction_notify_view_ready_by_geometry(struct sway_view *view,
instruction->container_state.content_width == width &&
instruction->container_state.content_height == height) {
set_instruction_ready(instruction);
+ return true;
}
+ return false;
}
static void _transaction_commit_dirty(bool server_request) {