From 376cef244b35c80e8a4ccd24ed678db4b708cfcb Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sun, 28 Sep 2025 09:55:42 +0000 Subject: [PATCH] aa git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@20 b9cfdab3-6d41-4d17-bbe4-086880011989 --- include/Milsko/LowLevel.h | 26 ++++++++++++++++---------- src/core.c | 4 ++-- src/window.c | 15 +++++++++++++++ src/x11.c | 3 +++ 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/include/Milsko/LowLevel.h b/include/Milsko/LowLevel.h index 9c9d684..c21fe07 100644 --- a/include/Milsko/LowLevel.h +++ b/include/Milsko/LowLevel.h @@ -17,16 +17,22 @@ typedef void* MilskoLLColor; #include #include -MILSKODECL MilskoLL MilskoLLCreate(MilskoLL parent, int x, int y, int width, int height); -MILSKODECL void MilskoLLDestroy(MilskoLL handle); -MILSKODECL void MilskoLLPolygon(MilskoLL handle, MilskoPoint* points, int points_count, MilskoLLColor color); +MILSKODECL MilskoLL MilskoLLCreate(MilskoLL parent, int x, int y, int width, int height); +MILSKODECL void MilskoLLDestroy(MilskoLL handle); + +MILSKODECL void MilskoLLPolygon(MilskoLL handle, MilskoPoint* points, int points_count, MilskoLLColor color); + MILSKODECL MilskoLLColor MilskoLLAllocColor(MilskoLL handle, int r, int g, int b); -MILSKODECL void MilskoLLGetXYWH(MilskoLL handle, int* x, int* y, unsigned int* w, unsigned int* h); -MILSKODECL void MilskoLLSetXY(MilskoLL handle, int x, int y); -MILSKODECL void MilskoLLSetWH(MilskoLL handle, int w, int h); -MILSKODECL void MilskoLLSetTitle(MilskoLL handle, const char* title); -MILSKODECL int MilskoLLPending(MilskoLL handle); -MILSKODECL void MilskoLLNextEvent(MilskoLL handle); -MILSKODECL void MilskoLLSleep(int ms); +MILSKODECL void MilskoLLFreeColor(MilskoLLColor color); + +MILSKODECL void MilskoLLGetXYWH(MilskoLL handle, int* x, int* y, unsigned int* w, unsigned int* h); +MILSKODECL void MilskoLLSetXY(MilskoLL handle, int x, int y); +MILSKODECL void MilskoLLSetWH(MilskoLL handle, int w, int h); + +MILSKODECL void MilskoLLSetTitle(MilskoLL handle, const char* title); + +MILSKODECL int MilskoLLPending(MilskoLL handle); +MILSKODECL void MilskoLLNextEvent(MilskoLL handle); +MILSKODECL void MilskoLLSleep(int ms); #endif diff --git a/src/core.c b/src/core.c index e800a12..a8a35ca 100644 --- a/src/core.c +++ b/src/core.c @@ -7,7 +7,7 @@ if(x->class != NULL && x->class->y != NULL) x->class->y(x) static void llhandler(MilskoLL handle) { - MilskoWidget h = (MilskoWidget)handle; + MilskoWidget h = (MilskoWidget)handle->user; Dispatch(h, draw); } @@ -86,7 +86,7 @@ int MilskoPending(MilskoWidget handle) { void MilskoLoop(MilskoWidget handle) { while(1) { MilskoStep(handle); - MilskoLLSleep(10); + MilskoLLSleep(5); } } diff --git a/src/window.c b/src/window.c index 33da638..2084f75 100644 --- a/src/window.c +++ b/src/window.c @@ -2,6 +2,21 @@ #include static void draw(MilskoWidget handle) { + MilskoLLColor c = MilskoLLAllocColor(handle->lowlevel, 255, 0, 0); + MilskoPoint p[4]; + + p[0].x = 0; + p[0].y = 0; + p[1].x = MilskoGetInteger(handle, MilskoNwidth); + p[1].y = 0; + p[2].x = MilskoGetInteger(handle, MilskoNwidth); + p[2].y = MilskoGetInteger(handle, MilskoNheight); + p[3].x = 0; + p[3].y = MilskoGetInteger(handle, MilskoNheight); + + MilskoLLPolygon(handle->lowlevel, p, 4, c); + + MilskoLLFreeColor(c); } MilskoClassRec MilskoWindowClassRec = { diff --git a/src/x11.c b/src/x11.c index a875078..29a3c51 100644 --- a/src/x11.c +++ b/src/x11.c @@ -102,6 +102,9 @@ int MilskoLLPending(MilskoLL handle) { void MilskoLLNextEvent(MilskoLL handle) { XEvent ev; if(XCheckWindowEvent(handle->display, handle->window, mask, &ev)) { + if(ev.type == Expose) { + if(handle->draw != NULL) handle->draw(handle); + } } }