core: Fix vulkan surface rotation (#4182)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.maplibre.android.testapp.activity.maplayout
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import android.widget.*
|
||||
@@ -34,6 +35,8 @@ open class DebugModeActivity : AppCompatActivity(), OnMapReadyCallback, OnFpsCha
|
||||
private var fpsView: TextView? = null
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR
|
||||
|
||||
setContentView(R.layout.activity_debug_mode)
|
||||
setupToolbar()
|
||||
setupMapView(savedInstanceState)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.maplibre.android.testapp.activity.maplayout
|
||||
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
@@ -16,6 +17,8 @@ class SimpleMapActivity : AppCompatActivity() {
|
||||
private lateinit var mapView: MapView
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR
|
||||
|
||||
onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
// activity uses singleInstance for testing purposes
|
||||
|
||||
@@ -97,18 +97,20 @@ void SurfaceRenderableResource::initSwapchain(uint32_t w, uint32_t h) {
|
||||
// update values based on surface limits
|
||||
extent.width = std::min(std::max(w, capabilities.minImageExtent.width), capabilities.maxImageExtent.width);
|
||||
extent.height = std::min(std::max(h, capabilities.minImageExtent.height), capabilities.maxImageExtent.height);
|
||||
}
|
||||
|
||||
if (hasSurfaceTransformSupport()) {
|
||||
if (capabilities.currentTransform & vk::SurfaceTransformFlagBitsKHR::eRotate90 ||
|
||||
capabilities.currentTransform & vk::SurfaceTransformFlagBitsKHR::eRotate270) {
|
||||
std::swap(extent.width, extent.height);
|
||||
if (hasSurfaceTransformSupport()) {
|
||||
if (capabilities.currentTransform & vk::SurfaceTransformFlagBitsKHR::eRotate90 ||
|
||||
capabilities.currentTransform & vk::SurfaceTransformFlagBitsKHR::eRotate270) {
|
||||
std::swap(extent.width, extent.height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t swapchainImageCount = capabilities.minImageCount + 1;
|
||||
// check surface limits (0 is unlimited)
|
||||
if (capabilities.maxImageCount > 0) swapchainImageCount = std::min(swapchainImageCount, capabilities.maxImageCount);
|
||||
if (capabilities.maxImageCount > 0) {
|
||||
swapchainImageCount = std::min(swapchainImageCount, capabilities.maxImageCount);
|
||||
}
|
||||
|
||||
auto swapchainCreateInfo = vk::SwapchainCreateInfoKHR()
|
||||
.setSurface(surface.get())
|
||||
|
||||
Reference in New Issue
Block a user