Expose oc_surface_bring_to_front/send_to_back() to orca apps, and always bring debug layer to front when displaying it

This commit is contained in:
Martin Fouilleul 2023-08-28 16:11:55 +02:00
parent b5034d3c81
commit 02bfe30672
3 changed files with 64 additions and 18 deletions

View File

@ -1750,23 +1750,51 @@ void oc_osx_update_layers(oc_window_data* window)
void oc_osx_surface_bring_to_front(oc_surface_data* surface) void oc_osx_surface_bring_to_front(oc_surface_data* surface)
{ {
oc_window_data* window = oc_window_ptr_from_handle(surface->layer.window); dispatch_block_t block = ^{
if(window) @autoreleasepool
{
oc_window_data* window = oc_window_ptr_from_handle(surface->layer.window);
if(window)
{
oc_list_remove(&window->osx.layers, &surface->layer.listElt);
oc_list_push_back(&window->osx.layers, &surface->layer.listElt);
oc_osx_update_layers(window);
}
}
};
if([NSThread isMainThread])
{ {
oc_list_remove(&window->osx.layers, &surface->layer.listElt); block();
oc_list_push_back(&window->osx.layers, &surface->layer.listElt); }
oc_osx_update_layers(window); else
{
dispatch_sync(dispatch_get_main_queue(), block);
} }
} }
void oc_osx_surface_send_to_back(oc_surface_data* surface) void oc_osx_surface_send_to_back(oc_surface_data* surface)
{ {
oc_window_data* window = oc_window_ptr_from_handle(surface->layer.window); dispatch_block_t block = ^{
if(window) @autoreleasepool
{
oc_window_data* window = oc_window_ptr_from_handle(surface->layer.window);
if(window)
{
oc_list_remove(&window->osx.layers, &surface->layer.listElt);
oc_list_push(&window->osx.layers, &surface->layer.listElt);
oc_osx_update_layers(window);
}
}
};
if([NSThread isMainThread])
{ {
oc_list_remove(&window->osx.layers, &surface->layer.listElt); block();
oc_list_push(&window->osx.layers, &surface->layer.listElt); }
oc_osx_update_layers(window); else
{
dispatch_sync(dispatch_get_main_queue(), block);
} }
} }

View File

@ -675,6 +675,8 @@ i32 orca_runloop(void* user)
if(app->debugOverlay.show) if(app->debugOverlay.show)
{ {
oc_surface_bring_to_front(app->debugOverlay.surface);
oc_ui_style debugUIDefaultStyle = { .bgColor = { 0 }, oc_ui_style debugUIDefaultStyle = { .bgColor = { 0 },
.color = { 1, 1, 1, 1 }, .color = { 1, 1, 1, 1 },
.font = app->debugOverlay.fontReg, .font = app->debugOverlay.fontReg,

View File

@ -36,6 +36,30 @@
{"name": "pixels", {"name": "pixels",
"type": {"name": "u8*", "tag": "p"}}] "type": {"name": "u8*", "tag": "p"}}]
}, },
{
"name": "oc_surface_contents_scaling",
"cname": "oc_surface_contents_scaling",
"ret": {"name": "oc_vec2", "tag": "S"},
"args": [
{"name": "surface",
"type": {"name": "oc_surface", "tag": "S"}}]
},
{
"name": "oc_surface_bring_to_front",
"cname": "oc_surface_bring_to_front",
"ret": {"name": "void", "tag": "v"},
"args": [
{"name": "surface",
"type": {"name": "oc_surface", "tag": "S"}}]
},
{
"name": "oc_surface_send_to_back",
"cname": "oc_surface_send_to_back",
"ret": {"name": "void", "tag": "v"},
"args": [
{"name": "surface",
"type": {"name": "oc_surface", "tag": "S"}}]
},
{ {
"name": "oc_surface_select", "name": "oc_surface_select",
"cname": "oc_surface_select", "cname": "oc_surface_select",
@ -52,14 +76,6 @@
{"name": "surface", {"name": "surface",
"type": {"name": "oc_surface", "tag": "S"}}] "type": {"name": "oc_surface", "tag": "S"}}]
}, },
{
"name": "oc_surface_contents_scaling",
"cname": "oc_surface_contents_scaling",
"ret": {"name": "oc_vec2", "tag": "S"},
"args": [
{"name": "surface",
"type": {"name": "oc_surface", "tag": "S"}}]
},
{ {
"name": "oc_surface_render_commands", "name": "oc_surface_render_commands",
"cname": "orca_surface_render_commands", "cname": "orca_surface_render_commands",