early-access version 3872
This commit is contained in:
parent
515d841d7a
commit
ea38f4bd12
7 changed files with 48 additions and 10 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 3870.
|
This is the source code for early-access 3872.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
package org.yuzu.yuzu_emu.adapters
|
package org.yuzu.yuzu_emu.adapters
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.drawable.LayerDrawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -15,7 +16,10 @@ import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.pm.ShortcutInfoCompat
|
import androidx.core.content.pm.ShortcutInfoCompat
|
||||||
import androidx.core.content.pm.ShortcutManagerCompat
|
import androidx.core.content.pm.ShortcutManagerCompat
|
||||||
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.core.graphics.drawable.IconCompat
|
import androidx.core.graphics.drawable.IconCompat
|
||||||
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.documentfile.provider.DocumentFile
|
import androidx.documentfile.provider.DocumentFile
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
|
@ -87,11 +91,24 @@ class GameAdapter(private val activity: AppCompatActivity) :
|
||||||
action = Intent.ACTION_VIEW
|
action = Intent.ACTION_VIEW
|
||||||
data = Uri.parse(holder.game.path)
|
data = Uri.parse(holder.game.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val layerDrawable = ResourcesCompat.getDrawable(
|
||||||
|
YuzuApplication.appContext.resources,
|
||||||
|
R.drawable.shortcut,
|
||||||
|
null
|
||||||
|
) as LayerDrawable
|
||||||
|
layerDrawable.setDrawableByLayerId(
|
||||||
|
R.id.shortcut_foreground,
|
||||||
|
GameIconUtils.getGameIcon(holder.game).toDrawable(YuzuApplication.appContext.resources)
|
||||||
|
)
|
||||||
|
val inset = YuzuApplication.appContext.resources
|
||||||
|
.getDimensionPixelSize(R.dimen.icon_inset)
|
||||||
|
layerDrawable.setLayerInset(1, inset, inset, inset, inset)
|
||||||
val shortcut = ShortcutInfoCompat.Builder(YuzuApplication.appContext, holder.game.path)
|
val shortcut = ShortcutInfoCompat.Builder(YuzuApplication.appContext, holder.game.path)
|
||||||
.setShortLabel(holder.game.title)
|
.setShortLabel(holder.game.title)
|
||||||
.setIcon(
|
.setIcon(
|
||||||
IconCompat.createWithBitmap(
|
IconCompat.createWithAdaptiveBitmap(
|
||||||
(holder.binding.imageGameScreen.drawable as BitmapDrawable).bitmap
|
layerDrawable.toBitmap(config = Bitmap.Config.ARGB_8888)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.setIntent(openIntent)
|
.setIntent(openIntent)
|
||||||
|
|
|
@ -6,9 +6,11 @@ package org.yuzu.yuzu_emu.utils
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
import androidx.core.graphics.drawable.toBitmap
|
||||||
import androidx.core.graphics.drawable.toDrawable
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import coil.ImageLoader
|
import coil.ImageLoader
|
||||||
import coil.decode.DataSource
|
import coil.decode.DataSource
|
||||||
|
import coil.executeBlocking
|
||||||
import coil.fetch.DrawableResult
|
import coil.fetch.DrawableResult
|
||||||
import coil.fetch.FetchResult
|
import coil.fetch.FetchResult
|
||||||
import coil.fetch.Fetcher
|
import coil.fetch.Fetcher
|
||||||
|
@ -74,4 +76,13 @@ object GameIconUtils {
|
||||||
.build()
|
.build()
|
||||||
imageLoader.enqueue(request)
|
imageLoader.enqueue(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getGameIcon(game: Game): Bitmap {
|
||||||
|
val request = ImageRequest.Builder(YuzuApplication.appContext)
|
||||||
|
.data(game)
|
||||||
|
.error(R.drawable.default_icon)
|
||||||
|
.build()
|
||||||
|
return imageLoader.executeBlocking(request)
|
||||||
|
.drawable!!.toBitmap(config = Bitmap.Config.ARGB_8888)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,9 +262,6 @@ public:
|
||||||
Core::SystemResultStatus InitializeEmulation(const std::string& filepath) {
|
Core::SystemResultStatus InitializeEmulation(const std::string& filepath) {
|
||||||
std::scoped_lock lock(m_mutex);
|
std::scoped_lock lock(m_mutex);
|
||||||
|
|
||||||
// Loads the configuration.
|
|
||||||
Config{};
|
|
||||||
|
|
||||||
// Create the render window.
|
// Create the render window.
|
||||||
m_window = std::make_unique<EmuWindow_Android>(&m_input_subsystem, m_native_window,
|
m_window = std::make_unique<EmuWindow_Android>(&m_input_subsystem, m_native_window,
|
||||||
m_vulkan_library);
|
m_vulkan_library);
|
||||||
|
@ -330,12 +327,13 @@ public:
|
||||||
m_system.ShutdownMainProcess();
|
m_system.ShutdownMainProcess();
|
||||||
m_detached_tasks.WaitForAllTasks();
|
m_detached_tasks.WaitForAllTasks();
|
||||||
m_load_result = Core::SystemResultStatus::ErrorNotInitialized;
|
m_load_result = Core::SystemResultStatus::ErrorNotInitialized;
|
||||||
|
m_window.reset();
|
||||||
|
OnEmulationStopped(Core::SystemResultStatus::Success);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tear down the render window.
|
// Tear down the render window.
|
||||||
m_window.reset();
|
m_window.reset();
|
||||||
|
|
||||||
OnEmulationStopped(m_load_result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PauseEmulation() {
|
void PauseEmulation() {
|
||||||
|
|
11
src/android/app/src/main/res/drawable/shortcut.xml
Executable file
11
src/android/app/src/main/res/drawable/shortcut.xml
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<color android:color="@android:color/white" />
|
||||||
|
</item>
|
||||||
|
<item android:id="@+id/shortcut_foreground">
|
||||||
|
<bitmap android:src="@drawable/default_icon" />
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</layer-list>
|
|
@ -27,7 +27,7 @@
|
||||||
app:nullable="true" />
|
app:nullable="true" />
|
||||||
<argument
|
<argument
|
||||||
android:name="menuTag"
|
android:name="menuTag"
|
||||||
app:argType="string" />
|
app:argType="org.yuzu.yuzu_emu.features.settings.model.Settings$MenuTag" />
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<action
|
<action
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<dimen name="spacing_refresh_end">72dp</dimen>
|
<dimen name="spacing_refresh_end">72dp</dimen>
|
||||||
<dimen name="menu_width">256dp</dimen>
|
<dimen name="menu_width">256dp</dimen>
|
||||||
<dimen name="card_width">165dp</dimen>
|
<dimen name="card_width">165dp</dimen>
|
||||||
|
<dimen name="icon_inset">24dp</dimen>
|
||||||
|
|
||||||
<dimen name="dialog_margin">20dp</dimen>
|
<dimen name="dialog_margin">20dp</dimen>
|
||||||
<dimen name="elevated_app_bar">3dp</dimen>
|
<dimen name="elevated_app_bar">3dp</dimen>
|
||||||
|
|
Loading…
Reference in a new issue