[client,sdl] add function to context

This commit is contained in:
akallabeth 2023-04-14 11:55:29 +02:00 committed by akallabeth
parent 0627baa939
commit dd57de8e19
4 changed files with 21 additions and 25 deletions

View File

@ -126,7 +126,7 @@ BOOL sdlDispContext::sendResize()
BOOL sdlDispContext::set_window_resizable() BOOL sdlDispContext::set_window_resizable()
{ {
update_resizeable(_sdl, TRUE); _sdl->update_resizeable(TRUE);
return TRUE; return TRUE;
} }
@ -389,7 +389,7 @@ BOOL sdlDispContext::init(DispClientContext* disp)
disp->DisplayControlCaps = sdlDispContext::DisplayControlCaps; disp->DisplayControlCaps = sdlDispContext::DisplayControlCaps;
} }
update_resizeable(_sdl, TRUE); _sdl->update_resizeable(TRUE);
return TRUE; return TRUE;
} }
@ -399,7 +399,7 @@ BOOL sdlDispContext::uninit(DispClientContext* disp)
return FALSE; return FALSE;
_disp = nullptr; _disp = nullptr;
update_resizeable(_sdl, FALSE); _sdl->update_resizeable(FALSE);
return TRUE; return TRUE;
} }

View File

@ -906,8 +906,8 @@ static BOOL sdl_post_connect(freerdp* instance)
context->update->SetKeyboardIndicators = sdlInput::keyboard_set_indicators; context->update->SetKeyboardIndicators = sdlInput::keyboard_set_indicators;
context->update->SetKeyboardImeStatus = sdlInput::keyboard_set_ime_status; context->update->SetKeyboardImeStatus = sdlInput::keyboard_set_ime_status;
update_resizeable(sdl, FALSE); sdl->update_resizeable(FALSE);
update_fullscreen(sdl, context->settings->Fullscreen || context->settings->UseMultimon); sdl->update_fullscreen(context->settings->Fullscreen || context->settings->UseMultimon);
return TRUE; return TRUE;
} }
@ -1278,39 +1278,35 @@ int main(int argc, char* argv[])
return rc; return rc;
} }
BOOL update_fullscreen(sdlContext* sdl, BOOL enter) BOOL sdl_context::update_fullscreen(BOOL enter)
{ {
WINPR_ASSERT(sdl); CriticalSectionLock lock(critical);
for (uint32_t x = 0; x < windowCount; x++)
CriticalSectionLock lock(sdl->critical);
for (uint32_t x = 0; x < sdl->windowCount; x++)
{ {
sdl_window_t* window = &sdl->windows[x]; sdl_window_t* window = &windows[x];
if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_FULLSCREEN, window->window, enter)) if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_FULLSCREEN, window->window, enter))
return FALSE; return FALSE;
} }
sdl->fullscreen = enter; fullscreen = enter;
return TRUE; return TRUE;
} }
BOOL update_resizeable(sdlContext* sdl, BOOL enable) BOOL sdl_context::update_resizeable(BOOL enable)
{ {
WINPR_ASSERT(sdl); CriticalSectionLock lock(critical);
CriticalSectionLock lock(sdl->critical); const rdpSettings* settings = common.context.settings;
const rdpSettings* settings = sdl->common.context.settings;
const BOOL dyn = freerdp_settings_get_bool(settings, FreeRDP_DynamicResolutionUpdate); const BOOL dyn = freerdp_settings_get_bool(settings, FreeRDP_DynamicResolutionUpdate);
const BOOL smart = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing); const BOOL smart = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing);
BOOL use = (dyn && enable) || smart; BOOL use = (dyn && enable) || smart;
for (uint32_t x = 0; x < sdl->windowCount; x++) for (uint32_t x = 0; x < windowCount; x++)
{ {
sdl_window_t* window = &sdl->windows[x]; sdl_window_t* window = &windows[x];
if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_RESIZEABLE, window->window, use)) if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_RESIZEABLE, window->window, use))
return FALSE; return FALSE;
} }
sdl->resizeable = use; resizeable = use;
return TRUE; return TRUE;
} }

View File

@ -68,7 +68,7 @@ struct sdl_context
Uint32 sdl_pixel_format; Uint32 sdl_pixel_format;
wLog* log; wLog* log;
};
BOOL update_resizeable(sdlContext* sdl, BOOL enable); BOOL update_resizeable(BOOL enable);
BOOL update_fullscreen(sdlContext* sdl, BOOL enter); BOOL update_fullscreen(BOOL enter);
};

View File

@ -435,13 +435,13 @@ BOOL sdlInput::keyboard_handle_event(const SDL_KeyboardEvent* ev)
case SDL_SCANCODE_RETURN: case SDL_SCANCODE_RETURN:
if (ev->type == SDL_KEYDOWN) if (ev->type == SDL_KEYDOWN)
{ {
update_fullscreen(_sdl, !_sdl->fullscreen); _sdl->update_fullscreen(!_sdl->fullscreen);
} }
return TRUE; return TRUE;
case SDL_SCANCODE_R: case SDL_SCANCODE_R:
if (ev->type == SDL_KEYDOWN) if (ev->type == SDL_KEYDOWN)
{ {
update_resizeable(_sdl, !_sdl->resizeable); _sdl->update_resizeable(!_sdl->resizeable);
} }
return TRUE; return TRUE;
case SDL_SCANCODE_G: case SDL_SCANCODE_G: