diff --git a/src/core/hle/service/vi/application_display_service.cpp b/src/core/hle/service/vi/application_display_service.cpp index 6b0bcb5362..289ad7073c 100644 --- a/src/core/hle/service/vi/application_display_service.cpp +++ b/src/core/hle/service/vi/application_display_service.cpp @@ -85,11 +85,25 @@ Result IApplicationDisplayService::GetIndirectDisplayTransactionService( } Result IApplicationDisplayService::OpenDisplay(Out out_display_id, DisplayName display_name) { - LOG_WARNING(Service_VI, "(STUBBED) called"); + LOG_DEBUG(Service_VI, "called with display_name={}", display_name.data()); + // Ensure the display name is null-terminated display_name[display_name.size() - 1] = '\0'; - ASSERT_MSG(strcmp(display_name.data(), "Default") == 0, - "Non-default displays aren't supported yet"); + + // According to switchbrew, only "Default", "External", "Edid", "Internal" and "Null" are valid + const std::array valid_names = { + "Default", "External", "Edid", "Internal", "Null" + }; + + bool valid_name = false; + for (const auto& name : valid_names) { + if (name == display_name.data()) { + valid_name = true; + break; + } + } + + R_UNLESS(valid_name, ResultOperationFailed); R_RETURN(m_container->OpenDisplay(out_display_id, display_name)); }