wip
All checks were successful
pyrite-dev/milsko/pipeline/head This commit looks good

This commit is contained in:
Nishi 2026-04-28 18:24:29 +00:00
commit f02a4d3f4b

View file

@ -1,12 +1,18 @@
#include <Mw/Milsko.h> #include <Mw/Milsko.h>
MwView::MwView(MwApplication* app, BRect rc, uint32 resizing, uint32 flags) : BView(rc, NULL, resizing, flags) {
app->PostMessage(new BMessage(B_PULSE));
this->SetViewColor(rand() % 256, 0, 0);
printf("?\n");
}
void MwApplication::ReadyToRun(){ void MwApplication::ReadyToRun(){
this->ready = 1; this->ready = 1;
} }
void MwApplication::Pulse(){ void MwApplication::Pulse(){
this->locker->Lock(); printf("!\n");
this->locker->Unlock();
} }
MwApplication::MwApplication(BRect rc, MwLL handle) : BApplication("application/milsko-generic") { MwApplication::MwApplication(BRect rc, MwLL handle) : BApplication("application/milsko-generic") {
@ -21,7 +27,9 @@ MwApplication::MwApplication(BRect rc, MwLL handle) : BApplication("application/
this->window = new BWindow(rc, "Milsko", B_TITLED_WINDOW, 0); this->window = new BWindow(rc, "Milsko", B_TITLED_WINDOW, 0);
this->window->Show(); this->window->Show();
handle->haiku.view = new BView(this->window->Bounds(), NULL, B_FOLLOW_ALL_SIDES, B_WILL_DRAW); handle->haiku.view = new MwView(this, this->window->Bounds(), B_FOLLOW_ALL_SIDES, B_WILL_DRAW);
this->window->AddChild(handle->haiku.view);
this->ready = 0; this->ready = 0;
this->locker = new BLocker(); this->locker = new BLocker();
@ -43,16 +51,20 @@ MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
r->common.copy_buffer = 1; r->common.copy_buffer = 1;
r->common.type = MwLLBackendHaiku; r->common.type = MwLLBackendHaiku;
r->haiku.parent = parent;
if(parent == NULL){ if(parent == NULL){
r->haiku.app = new MwApplication(rc, r); r->haiku.app = new MwApplication(rc, r);
r->haiku.app->window->AddChild(r->haiku.view);
r->haiku.app->Run(); //r->haiku.app->Run();
while(!r->haiku.app->ready);
}else{ }else{
MwLL top = r;
while(top->haiku.parent != NULL){
top = top->haiku.parent;
}
r->haiku.app = NULL; r->haiku.app = NULL;
r->haiku.view = new BView(rc, NULL, B_FOLLOW_NONE, B_WILL_DRAW); r->haiku.view = new MwView(top->haiku.app, rc, B_FOLLOW_NONE, B_WILL_DRAW);
parent->haiku.view->AddChild(r->haiku.view); parent->haiku.view->AddChild(r->haiku.view);
} }
@ -83,7 +95,9 @@ void MwLLLineImpl(MwLL handle, MwPoint* points, MwLLColor color) {}
void MwLLBeginDrawImpl(MwLL handle) {} void MwLLBeginDrawImpl(MwLL handle) {}
void MwLLEndDrawImpl(MwLL handle) {} void MwLLEndDrawImpl(MwLL handle) {
new BMessage(B_PULSE);
}
MwLLColor MwLLAllocColorImpl(MwLL handle, int r, int g, int b) { MwLLColor MwLLAllocColorImpl(MwLL handle, int r, int g, int b) {
MwLLColor c = (MwLLColor)malloc(sizeof(*c)); MwLLColor c = (MwLLColor)malloc(sizeof(*c));