Skip to content

Commit

Permalink
#2116 #2137 transactional blend
Browse files Browse the repository at this point in the history
  • Loading branch information
koekeishiya committed Mar 4, 2024
1 parent 4f59efe commit 4abe88c
Show file tree
Hide file tree
Showing 5 changed files with 149 additions and 187 deletions.
2 changes: 1 addition & 1 deletion src/osax/common.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef SA_COMMON_H
#define SA_COMMON_H

#define OSAX_VERSION "2.1.2"
#define OSAX_VERSION "2.1.3"

#define OSAX_ATTRIB_DOCK_SPACES 0x01
#define OSAX_ATTRIB_DPPM 0x02
Expand Down
45 changes: 23 additions & 22 deletions src/osax/payload.m
Original file line number Diff line number Diff line change
Expand Up @@ -837,31 +837,32 @@ static void do_window_swap_proxy_out(char *message)

static void do_window_blend(char *message)
{
uint32_t a_wid;
unpack(message, a_wid);
if (!a_wid) return;
int count = 0;
unpack(message, count);
if (!count) return;

uint32_t b_wid;
unpack(message, b_wid);
if (!b_wid) return;
CFTypeRef transaction = SLSTransactionCreate(SLSMainConnectionID());
pthread_mutex_lock(&window_fade_lock);

float a_alpha, b_alpha;
unpack(message, a_alpha);
unpack(message, b_alpha);
for (int i = 0; i < count; ++i) {
uint32_t wid;
unpack(message, wid);

pthread_mutex_lock(&window_fade_lock);
struct window_fade_context *context = table_find(&window_fade_table, &a_wid);
if (context) {
context->alpha = a_alpha;
context->duration = 0.0f;
__asm__ __volatile__ ("" ::: "memory");
context->skip = true;
float alpha;
unpack(message, alpha);

struct window_fade_context *context = table_find(&window_fade_table, &wid);
if (context) {
context->alpha = alpha;
context->duration = 0.0f;
__asm__ __volatile__ ("" ::: "memory");
context->skip = true;
}

SLSTransactionSetWindowAlpha(transaction, wid, alpha);
}
pthread_mutex_unlock(&window_fade_lock);

CFTypeRef transaction = SLSTransactionCreate(SLSMainConnectionID());
SLSTransactionSetWindowAlpha(transaction, a_wid, a_alpha);
SLSTransactionSetWindowAlpha(transaction, b_wid, b_alpha);
pthread_mutex_unlock(&window_fade_lock);
SLSTransactionCommit(transaction, 0);
CFRelease(transaction);
}
Expand Down Expand Up @@ -970,7 +971,7 @@ static inline bool read_message(int sockfd, char *message)
int bytes_read = 0;
int bytes_to_read = 0;

if (read(sockfd, &bytes_to_read, sizeof(char)) == sizeof(char)) {
if (read(sockfd, &bytes_to_read, sizeof(int)) == sizeof(int)) {
do {
int cur_read = read(sockfd, message+bytes_read, bytes_to_read-bytes_read);
if (cur_read <= 0) break;
Expand All @@ -989,7 +990,7 @@ static inline bool read_message(int sockfd, char *message)
int sockfd = accept(daemon_sockfd, NULL, 0);
if (sockfd == -1) continue;

char message[0x100];
char message[0x1000];
if (read_message(sockfd, message)) {
handle_message(sockfd, message);
}
Expand Down
2 changes: 1 addition & 1 deletion src/sa.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ bool scripting_addition_scale_window(uint32_t wid, float x, float y, float w, fl
bool scripting_addition_swap_window_proxy_in(uint32_t wid, uint32_t proxy_wid);
bool scripting_addition_swap_window_proxy_out(uint32_t wid, uint32_t proxy_wid, float wid_alpha);
bool scripting_addition_order_window(uint32_t a_wid, int order, uint32_t b_wid);
bool scripting_addition_blend_alpha(uint32_t a_wid, float a_alpha, uint32_t b_wid, float b_alpha);
bool scripting_addition_blend_alpha(uint32_t *wid, float *alpha, int count);

#endif
Loading

0 comments on commit 4abe88c

Please sign in to comment.