early-access version 3843
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| yuzu emulator early access | ||||
| ============= | ||||
|  | ||||
| This is the source code for early-access 3842. | ||||
| This is the source code for early-access 3843. | ||||
|  | ||||
| ## Legal Notice | ||||
|  | ||||
|   | ||||
| @@ -56,7 +56,6 @@ SPDX-License-Identifier: GPL-3.0-or-later | ||||
|             android:name="org.yuzu.yuzu_emu.activities.EmulationActivity" | ||||
|             android:theme="@style/Theme.Yuzu.Main" | ||||
|             android:launchMode="singleTop" | ||||
|             android:screenOrientation="userLandscape" | ||||
|             android:supportsPictureInPicture="true" | ||||
|             android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode" | ||||
|             android:exported="true"> | ||||
|   | ||||
| @@ -11,7 +11,6 @@ import android.view.View | ||||
| import android.view.ViewGroup.MarginLayoutParams | ||||
| import android.widget.Toast | ||||
| import androidx.activity.OnBackPressedCallback | ||||
| import androidx.activity.result.ActivityResultLauncher | ||||
| import androidx.activity.viewModels | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import androidx.core.view.ViewCompat | ||||
| @@ -246,17 +245,5 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView { | ||||
|             settings.putExtra(ARG_GAME_ID, gameId) | ||||
|             context.startActivity(settings) | ||||
|         } | ||||
|  | ||||
|         fun launch( | ||||
|             context: Context, | ||||
|             launcher: ActivityResultLauncher<Intent>, | ||||
|             menuTag: String?, | ||||
|             gameId: String? | ||||
|         ) { | ||||
|             val settings = Intent(context, SettingsActivity::class.java) | ||||
|             settings.putExtra(ARG_MENU_TAG, menuTag) | ||||
|             settings.putExtra(ARG_GAME_ID, gameId) | ||||
|             launcher.launch(settings) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,7 +7,6 @@ import android.annotation.SuppressLint | ||||
| import android.app.AlertDialog | ||||
| import android.content.Context | ||||
| import android.content.DialogInterface | ||||
| import android.content.Intent | ||||
| import android.content.SharedPreferences | ||||
| import android.content.pm.ActivityInfo | ||||
| import android.content.res.Configuration | ||||
| @@ -19,8 +18,6 @@ import android.util.Rational | ||||
| import android.view.* | ||||
| import android.widget.TextView | ||||
| import androidx.activity.OnBackPressedCallback | ||||
| import androidx.activity.result.ActivityResultLauncher | ||||
| import androidx.activity.result.contract.ActivityResultContracts | ||||
| import androidx.appcompat.widget.PopupMenu | ||||
| import androidx.core.content.res.ResourcesCompat | ||||
| import androidx.core.graphics.Insets | ||||
| @@ -66,8 +63,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | ||||
|  | ||||
|     private var isInFoldableLayout = false | ||||
|  | ||||
|     private lateinit var onReturnFromSettings: ActivityResultLauncher<Intent> | ||||
|  | ||||
|     override fun onAttach(context: Context) { | ||||
|         super.onAttach(context) | ||||
|         if (context is EmulationActivity) { | ||||
| @@ -81,11 +76,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | ||||
|                         .collect { updateFoldableLayout(context, it) } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             onReturnFromSettings = context.activityResultRegistry.register( | ||||
|                 "SettingsResult", | ||||
|                 ActivityResultContracts.StartActivityForResult() | ||||
|             ) { updateScreenLayout() } | ||||
|         } else { | ||||
|             throw IllegalStateException("EmulationFragment must have EmulationActivity parent") | ||||
|         } | ||||
| @@ -149,12 +139,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | ||||
|                 } | ||||
|  | ||||
|                 R.id.menu_settings -> { | ||||
|                     SettingsActivity.launch( | ||||
|                         requireContext(), | ||||
|                         onReturnFromSettings, | ||||
|                         SettingsFile.FILE_NAME_CONFIG, | ||||
|                         "" | ||||
|                     ) | ||||
|                     SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") | ||||
|                     true | ||||
|                 } | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,6 @@ import android.content.Context | ||||
| import android.util.AttributeSet | ||||
| import android.util.Rational | ||||
| import android.view.SurfaceView | ||||
| import kotlin.math.roundToInt | ||||
|  | ||||
| class FixedRatioSurfaceView @JvmOverloads constructor( | ||||
|     context: Context, | ||||
| @@ -22,27 +21,44 @@ class FixedRatioSurfaceView @JvmOverloads constructor( | ||||
|      */ | ||||
|     fun setAspectRatio(ratio: Rational?) { | ||||
|         aspectRatio = ratio?.toFloat() ?: 0f | ||||
|         requestLayout() | ||||
|     } | ||||
|  | ||||
|     override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { | ||||
|         super.onMeasure(widthMeasureSpec, heightMeasureSpec) | ||||
|         val width = MeasureSpec.getSize(widthMeasureSpec) | ||||
|         val height = MeasureSpec.getSize(heightMeasureSpec) | ||||
|         val displayWidth: Float = MeasureSpec.getSize(widthMeasureSpec).toFloat() | ||||
|         val displayHeight: Float = MeasureSpec.getSize(heightMeasureSpec).toFloat() | ||||
|         if (aspectRatio != 0f) { | ||||
|             val newWidth: Int | ||||
|             val newHeight: Int | ||||
|             if (height * aspectRatio < width) { | ||||
|                 newWidth = (height * aspectRatio).roundToInt() | ||||
|                 newHeight = height | ||||
|             val displayAspect = displayWidth / displayHeight | ||||
|             if (displayAspect < aspectRatio) { | ||||
|                 // Max out width | ||||
|                 val halfHeight = displayHeight / 2 | ||||
|                 val surfaceHeight = displayWidth / aspectRatio | ||||
|                 val newTop: Float = halfHeight - (surfaceHeight / 2) | ||||
|                 val newBottom: Float = halfHeight + (surfaceHeight / 2) | ||||
|                 super.onMeasure( | ||||
|                     widthMeasureSpec, | ||||
|                     MeasureSpec.makeMeasureSpec( | ||||
|                         newBottom.toInt() - newTop.toInt(), | ||||
|                         MeasureSpec.EXACTLY | ||||
|                     ) | ||||
|                 ) | ||||
|                 return | ||||
|             } else { | ||||
|                 newWidth = width | ||||
|                 newHeight = (width / aspectRatio).roundToInt() | ||||
|                 // Max out height | ||||
|                 val halfWidth = displayWidth / 2 | ||||
|                 val surfaceWidth = displayHeight * aspectRatio | ||||
|                 val newLeft: Float = halfWidth - (surfaceWidth / 2) | ||||
|                 val newRight: Float = halfWidth + (surfaceWidth / 2) | ||||
|                 super.onMeasure( | ||||
|                     MeasureSpec.makeMeasureSpec( | ||||
|                         newRight.toInt() - newLeft.toInt(), | ||||
|                         MeasureSpec.EXACTLY | ||||
|                     ), | ||||
|                     heightMeasureSpec | ||||
|                 ) | ||||
|                 return | ||||
|             } | ||||
|             val left = (width - newWidth) / 2 | ||||
|             val top = (height - newHeight) / 2 | ||||
|             setLeftTopRightBottom(left, top, left + newWidth, top + newHeight) | ||||
|         } else { | ||||
|             setLeftTopRightBottom(0, 0, width, height) | ||||
|         } | ||||
|         super.onMeasure(widthMeasureSpec, heightMeasureSpec) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2616,6 +2616,13 @@ void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_pa | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     const FileSys::NCA update_nca{packed_update_raw, nullptr}; | ||||
|     if (type != FileSys::ContentRecordType::Program || | ||||
|         update_nca.GetStatus() != Loader::ResultStatus::ErrorMissingBKTRBaseRomFS || | ||||
|         update_nca.GetTitleId() != FileSys::GetUpdateTitleID(title_id)) { | ||||
|         packed_update_raw = {}; | ||||
|     } | ||||
|  | ||||
|     const auto base_romfs = base_nca->GetRomFS(); | ||||
|     if (!base_romfs) { | ||||
|         failed(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user