diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp index 6d07e637cf..d9618824d5 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp @@ -839,12 +839,14 @@ int main(int argc, char *argv[]) if (res.width() < res.height()) res.transpose(); + g_display.pixel_xres = res.width(); g_display.pixel_yres = res.height(); - g_display.dpi_scale = screen->logicalDotsPerInchX() / screen->physicalDotsPerInchX(); // We assume physicalDotsPerInchY is the same as PerInchX. - g_display.dpi_scale_real = g_display.dpi_scale; + g_display.dpi_scale_real = screen->logicalDotsPerInchX() / screen->physicalDotsPerInchX(); + + g_display.dpi_scale = g_display.dpi_scale_real; g_display.dp_xres = (int)(g_display.pixel_xres * g_display.dpi_scale); g_display.dp_yres = (int)(g_display.pixel_yres * g_display.dpi_scale); diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 79862da500..59bb55c820 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -1517,7 +1517,7 @@ static bool IsWindowSmall(int pixelWidth, int pixelHeight) { return g_Config.IsPortrait() ? (h < 480 + 80) : (w < 480 + 80); } -bool Native_UpdateScreenScale(int width, int height) { +bool Native_UpdateScreenScale(int pixel_width, int pixel_height) { bool smallWindow; float g_logical_dpi = System_GetPropertyFloat(SYSPROP_DISPLAY_LOGICAL_DPI); @@ -1530,29 +1530,30 @@ bool Native_UpdateScreenScale(int width, int height) { g_logical_dpi = 96.0f; } - g_display.dpi_scale = g_logical_dpi / g_display.dpi; - g_display.dpi_scale_real = g_display.dpi_scale; + g_display.dpi_scale_real = g_logical_dpi / g_display.dpi; + g_display.dpi_scale = g_display.dpi_scale_real; - smallWindow = IsWindowSmall(width, height); + smallWindow = IsWindowSmall(pixel_width, pixel_height); if (smallWindow) { g_display.dpi /= 2.0f; g_display.dpi_scale *= 2.0f; } g_display.pixel_in_dps = 1.0f / g_display.dpi_scale; - int new_dp_xres = (int)(width * g_display.dpi_scale); - int new_dp_yres = (int)(height * g_display.dpi_scale); + int new_dp_xres = (int)(pixel_width * g_display.dpi_scale); + int new_dp_yres = (int)(pixel_height * g_display.dpi_scale); bool dp_changed = new_dp_xres != g_display.dp_xres || new_dp_yres != g_display.dp_yres; - bool px_changed = g_display.pixel_xres != width || g_display.pixel_yres != height; + bool px_changed = g_display.pixel_xres != pixel_width || g_display.pixel_yres != pixel_height; - if (dp_changed || px_changed) { - g_display.dp_xres = new_dp_xres; - g_display.dp_yres = new_dp_yres; - g_display.pixel_xres = width; - g_display.pixel_yres = height; - NativeResized(); - return true; + if (!dp_changed && !px_changed) { + return false; } - return false; + + g_display.dp_xres = new_dp_xres; + g_display.dp_yres = new_dp_yres; + g_display.pixel_xres = pixel_width; + g_display.pixel_yres = pixel_height; + NativeResized(); + return true; } diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp index 77c5fb51fa..324191eec5 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp @@ -143,16 +143,19 @@ void PPSSPP_UWPMain::UpdateScreenState() { if (g_display.rotation == DisplayRotation::ROTATE_90 || g_display.rotation == DisplayRotation::ROTATE_270) { // We need to swap our width/height. + // TODO: This is most likely dead code, since we no longer support Windows Phone. std::swap(g_display.pixel_xres, g_display.pixel_yres); } g_display.dpi = m_deviceResources->GetActualDpi(); - if (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) == DEVICE_TYPE_MOBILE) { // Boost DPI a bit to look better. g_display.dpi *= 96.0f / 136.0f; } - g_display.dpi_scale = 96.0f / g_display.dpi; + + g_display.dpi_scale_real = 96.0f / g_display.dpi; + + g_display.dpi_scale = g_display.dpi_scale_real; g_display.pixel_in_dps = 1.0f / g_display.dpi_scale; g_display.dp_xres = g_display.pixel_xres * g_display.dpi_scale; diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp index 2bfb19d75a..4b4f864194 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp @@ -152,8 +152,8 @@ static int deviceType; // Exposed so it can be displayed on the touchscreen test. static int display_xres; static int display_yres; -static int display_dpi_x; -static int display_dpi_y; +static int display_dpi; + static int backbuffer_format; // Android PixelFormat enum static int desiredBackbufferSizeX; @@ -999,8 +999,8 @@ extern "C" jboolean Java_org_ppsspp_ppsspp_NativeRenderer_displayInit(JNIEnv * e } static void recalculateDpi() { - g_display.dpi = (float)display_dpi_x; - g_display.dpi_scale_real = 240.0f / (float)display_dpi_x; + g_display.dpi = (float)display_dpi; + g_display.dpi_scale_real = 240.0f / (float)display_dpi; g_display.dpi_scale = g_display.dpi_scale_real; g_display.dp_xres = display_xres * g_display.dpi_scale; @@ -1415,14 +1415,13 @@ extern "C" void JNICALL Java_org_ppsspp_ppsspp_NativeApp_setDisplayParameters(JN bool changed = false; changed = changed || display_xres != xres || display_yres != yres; - changed = changed || display_dpi_x != dpi || display_dpi_y != dpi; + changed = changed || display_dpi != dpi; changed = changed || g_display.display_hz != refreshRate; if (changed) { display_xres = xres; display_yres = yres; - display_dpi_x = dpi; - display_dpi_y = dpi; + display_dpi = dpi; g_display.display_hz = refreshRate; recalculateDpi(); diff --git a/assets/compat.ini b/assets/compat.ini index 1f4fe2db98..4c83c6bdc3 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -1359,6 +1359,7 @@ ULES00808 = true ULUS10270 = true [DeswizzleDepth] +# Ratchet & Clank smoke effects (#15859) UCUS98633 = true UCAS40145 = true UCES00420 = true