Move Dispmanx layers when using host-run
- When launching something with host-run, move the Amiga display Dispmanx layer to background - When the focus is regained, bring the Amiga display layer back to the foreground
This commit is contained in:
parent
1b15a672d3
commit
9497f826da
3 changed files with 18 additions and 1 deletions
|
@ -1454,6 +1454,12 @@ void toggle_mousegrab()
|
|||
|
||||
void set_mouse_grab(const bool grab)
|
||||
{
|
||||
#ifdef USE_DISPMANX
|
||||
if (grab)
|
||||
change_layer_number(0);
|
||||
else
|
||||
change_layer_number(-128);
|
||||
#endif
|
||||
if (grab && mouse_grabbed || !grab && !mouse_grabbed)
|
||||
return;
|
||||
if (!grab && mouse_grabbed || grab && !mouse_grabbed)
|
||||
|
@ -1597,10 +1603,12 @@ void process_event(SDL_Event event)
|
|||
unsetminimized();
|
||||
break;
|
||||
case SDL_WINDOWEVENT_ENTER:
|
||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||
mouseinside = true;
|
||||
set_mouse_grab(true);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_LEAVE:
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
mouseinside = false;
|
||||
set_mouse_grab(false);
|
||||
break;
|
||||
|
|
|
@ -251,7 +251,7 @@ static int display_thread(void *unused)
|
|||
&black_rect, blackfb_resource, &src_rect, DISPMANX_PROTECTION_NONE, &alpha,
|
||||
nullptr, DISPMANX_NO_ROTATE);
|
||||
if (!elementHandle)
|
||||
elementHandle = vc_dispmanx_element_add(updateHandle, displayHandle, 2,
|
||||
elementHandle = vc_dispmanx_element_add(updateHandle, displayHandle, 0,
|
||||
&dst_rect, amigafb_resource_1, &src_rect, DISPMANX_PROTECTION_NONE, &alpha,
|
||||
nullptr, DISPMANX_NO_ROTATE);
|
||||
|
||||
|
@ -303,6 +303,14 @@ static int display_thread(void *unused)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void change_layer_number(int layer)
|
||||
{
|
||||
updateHandle = vc_dispmanx_update_start(0);
|
||||
vc_dispmanx_element_change_layer(updateHandle, blackscreen_element, layer);
|
||||
vc_dispmanx_element_change_layer(updateHandle, elementHandle, layer);
|
||||
vc_dispmanx_update_submit_sync(updateHandle);
|
||||
}
|
||||
#endif
|
||||
|
||||
int graphics_setup(void)
|
||||
|
|
|
@ -20,6 +20,7 @@ extern VC_RECT_T dst_rect;
|
|||
extern VC_RECT_T blit_rect;
|
||||
extern VC_RECT_T black_rect;
|
||||
extern VC_IMAGE_TYPE_T rgb_mode;
|
||||
extern void change_layer_number(int layer);
|
||||
#else
|
||||
extern SDL_Texture* texture;
|
||||
extern SDL_Cursor* cursor;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue