|
|
|
@ -267,9 +267,7 @@ void transaction_commit(struct sway_transaction *transaction) {
|
|
|
|
|
instruction->state.view_y,
|
|
|
|
|
instruction->state.view_width,
|
|
|
|
|
instruction->state.view_height);
|
|
|
|
|
if (instruction->serial) {
|
|
|
|
|
++transaction->num_waiting;
|
|
|
|
|
}
|
|
|
|
|
++transaction->num_waiting;
|
|
|
|
|
}
|
|
|
|
|
list_add(con->instructions, instruction);
|
|
|
|
|
}
|
|
|
|
@ -307,20 +305,8 @@ void transaction_commit(struct sway_transaction *transaction) {
|
|
|
|
|
update_debug_tree();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void transaction_notify_view_ready(struct sway_view *view, uint32_t serial) {
|
|
|
|
|
// Find the instruction
|
|
|
|
|
struct sway_transaction_instruction *instruction = NULL;
|
|
|
|
|
for (int i = 0; i < view->swayc->instructions->length; ++i) {
|
|
|
|
|
struct sway_transaction_instruction *tmp_instruction =
|
|
|
|
|
view->swayc->instructions->items[i];
|
|
|
|
|
if (tmp_instruction->serial == serial && !tmp_instruction->ready) {
|
|
|
|
|
instruction = tmp_instruction;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!instruction) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
static void set_instruction_ready(
|
|
|
|
|
struct sway_transaction_instruction *instruction) {
|
|
|
|
|
instruction->ready = true;
|
|
|
|
|
|
|
|
|
|
// If all views are ready, apply the transaction.
|
|
|
|
@ -335,6 +321,30 @@ void transaction_notify_view_ready(struct sway_view *view, uint32_t serial) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void transaction_notify_view_ready(struct sway_view *view, uint32_t serial) {
|
|
|
|
|
for (int i = 0; i < view->swayc->instructions->length; ++i) {
|
|
|
|
|
struct sway_transaction_instruction *instruction =
|
|
|
|
|
view->swayc->instructions->items[i];
|
|
|
|
|
if (instruction->serial == serial && !instruction->ready) {
|
|
|
|
|
set_instruction_ready(instruction);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void transaction_notify_view_ready_by_size(struct sway_view *view,
|
|
|
|
|
int width, int height) {
|
|
|
|
|
for (int i = 0; i < view->swayc->instructions->length; ++i) {
|
|
|
|
|
struct sway_transaction_instruction *instruction =
|
|
|
|
|
view->swayc->instructions->items[i];
|
|
|
|
|
if (!instruction->ready && instruction->state.view_width == width &&
|
|
|
|
|
instruction->state.view_height == height) {
|
|
|
|
|
set_instruction_ready(instruction);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct wlr_texture *transaction_get_texture(struct sway_view *view) {
|
|
|
|
|
if (!view->swayc || !view->swayc->instructions->length) {
|
|
|
|
|
return view->surface->buffer->texture;
|
|
|
|
|