less flickering for x11

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@322 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
Nishi 2025-10-14 10:34:05 +00:00
commit 27bf409a88
5 changed files with 27 additions and 11 deletions

View file

@ -115,6 +115,8 @@ MWDECL void MwLLMakeBorderless(MwLL handle, int toggle);
MWDECL long MwLLGetTick(void); MWDECL long MwLLGetTick(void);
MWDECL void MwLLSetBackground(MwLL handle, MwLLColor color);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -276,6 +276,11 @@ void MwLLFreeColor(MwLLColor color) {
free(color); free(color);
} }
void MwLLSetBackground(MwLL handle, MwLLColor color) {
(void)handle;
(void)color;
}
void MwLLGetXYWH(MwLL handle, int* x, int* y, unsigned int* w, unsigned int* h) { void MwLLGetXYWH(MwLL handle, int* x, int* y, unsigned int* w, unsigned int* h) {
RECT rc; RECT rc;

View file

@ -174,6 +174,10 @@ void MwLLFreeColor(MwLLColor color) {
free(color); free(color);
} }
void MwLLSetBackground(MwLL handle, MwLLColor color) {
XSetWindowBackground(handle->display, handle->window, color->pixel);
}
int MwLLPending(MwLL handle) { int MwLLPending(MwLL handle) {
XEvent ev; XEvent ev;
if(XCheckTypedWindowEvent(handle->display, handle->window, ClientMessage, &ev) || XCheckWindowEvent(handle->display, handle->window, mask, &ev)) { if(XCheckTypedWindowEvent(handle->display, handle->window, ClientMessage, &ev) || XCheckWindowEvent(handle->display, handle->window, mask, &ev)) {

View file

@ -275,6 +275,11 @@ void MwSetText(MwWidget handle, const char* key, const char* value) {
shput(handle->text, key, v); shput(handle->text, key, v);
} }
if(handle->prop_event) MwDispatch3(handle, prop_change, key); if(handle->prop_event) MwDispatch3(handle, prop_change, key);
if(strcmp(key, MwNbackground) == 0) {
MwLLColor c = MwParseColor(handle, value);
MwLLSetBackground(handle->lowlevel, c);
MwLLFreeColor(c);
}
if(strcmp(key, MwNbackground) == 0 || strcmp(key, MwNforeground) == 0) { if(strcmp(key, MwNbackground) == 0 || strcmp(key, MwNforeground) == 0) {
MwForceRender(handle); MwForceRender(handle);
} }