하늘나라 동적화면 구현 + 맥/윈도우 앱 구동 검증
개요
크라우니OS 하늘나라 GUI를
동적 화면(event loop + 시간대 애니메이션)으로 구현하고,
크라우니VM(crownyc)이
맥(Cocoa)과 윈도우(Win32)에서 앱처럼 구동됨을 실증했다.
W9(한선씨-정의 명령버퍼)에 이어 W10. "기존 개발 도구 활용 + 최적화·실용화" 원칙.
무엇을 했는가
1. 동적 화면 (한선씨, 입력+애니메이션)
apps/동적하늘나라앱.한선 — 인터랙티브: 이벤트대기()(블로킹) 루프로
클릭(타입1)→아이콘 히트 검사→선택 하이라이트, 키(타입2)→시간대 모드 전환, 종료(7)→탈출.
apps/동적데모.한선 — 자가구동: 6프레임 시간대 순환(새벽→낮→노을→밤), 해/달 원 이동,
대기(1)초/프레임,
이벤트확인()(논블로킹)으로 종료 감지.
2. 맥 실증 (라이브 네이티브 윈도우)
crownyc_win --window run → Cocoa 윈도우(CrownyOS v4) 열림.
- 실행 모델: VM=별도 pthread, 메인스레드
[NSApp run], 윈도우 tick(33ms)이
setNeedsDisplay로 fb 상시 refresh → VM이 fb_rgb 갱신 시 자동 반영.
- 검증:
screencapture -R40,479,640,512 윈도우 영역 전후 캡처 → 하늘색 프레임마다
212~232 변동 = 동적 렌더 확인. 눈으로 HANEULNARA + 3×3 TOAU 런처 + 이동하는 해 확인.
3. 윈도우 실증 (Win32 .exe 크로스컴파일)
crownyc_window_win32.c(기존, GDI): WM_PAINT→SetDIBitsToDevice present,
WM_TIMER 30fps
InvalidateRect, VM=
_beginthreadex 스레드 — 맥과 동일 아키텍처.
- mingw-w64로
crownyc.c + win32.c + compositor/ui/theme.c → PE32+ x86-64 1.28MB .exe.
- 재현 스크립트:
crownyc/build-win.sh.
관련 파일
/Users/ef/CrownyOS/crownyc/apps/동적하늘나라앱.한선, 동적데모.한선
/Users/ef/CrownyOS/crownyc/crownyc_window_win32.c (clipboard/ct_draw_text GDI 추가)
/Users/ef/CrownyOS/crownyc/win32_compat.h (신규: d_type dirent + mkdir shim)
/Users/ef/CrownyOS/crownyc/crownyc.c (_WIN32 블록 POSIX shim 확장)
/Users/ef/CrownyOS/crownyc/build-win.sh (신규)
배포: /Users/ef/crowny-downloads/public/platforms/windows-x86/ (exe + 동적앱 toau)
SHA256(crownyos.exe): 3bc95b2e3cef2ff45ab2933c79941e62edb94fa3af9f871e1ccdd466b12e4b52윈도우 포팅 함정 (재사용)
struct pollfd — winsock2가 정의하므로 자체 재정의 제거(poll은 매크로 stub).
- POSIX shim:
mkdir(p,m)→_mkdir(p), realpath→_fullpath, fsync→_commit,
ftruncate→_chsize,
getpid→_getpid,
sleep(s)→Sleep(s*1000),
RTLD_LOCAL=0.
fcntl 비차단 → crowny_fcntl가 ioctlsocket(FIONBIO). inet_aton→inet_addr shim.
regmatch_t는 int 아닌 {rm_so, rm_eo} 구조체.
setsockopt optval 포인터 → -Wno-incompatible-pointer-types.
- 보조 .c는
win32_compat.h(FindFirstFile 기반 d_type dirent)로 dirent/mkdir 해결.
clipboard_get/set, ct_draw_text는 Mac ObjC 전용 → win32.c에 GDI 구현 추가.
- 모든 수정은
#ifdef _WIN32 가드 → Mac 빌드 무회귀(재빌드 확인).
잔여 이슈
- wine 미설치로 .exe 실기 실행 스크린샷은 미수행(빌드+동일 아키텍처로 검증 대체). 실 윈도우/VM 권장.
- fb_rgb 색 순서(맥 RGBA vs 윈도우 DIB BGR) 실기 교차 확인 필요.
- 컴포지터 텍스트(ct_draw_text) GDI 렌더 실기 품질 확인.
- 동적데모 새벽/낮 하늘 보간식이 녹색 편향 — 색 곡선 튜닝 여지.