summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar liamwhite2024-01-25 14:19:32 -0500
committerGravatar GitHub2024-01-25 14:19:32 -0500
commit6e67b25af902868d1eb6abba6d1c991816a515f7 (patch)
treeb94836556db2642a12b399eacb17c5ec034693b1 /src
parentMerge pull request #12786 from t895/driver-overlay (diff)
parentandroid: Only compare game contents for GameAdapter (diff)
downloadyuzu-6e67b25af902868d1eb6abba6d1c991816a515f7.tar.gz
yuzu-6e67b25af902868d1eb6abba6d1c991816a515f7.tar.xz
yuzu-6e67b25af902868d1eb6abba6d1c991816a515f7.zip
Merge pull request #12787 from t895/game-list-refresh
android: Only compare game contents for GameAdapter
Diffstat (limited to 'src')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AbstractDiffAdapter.kt13
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt16
3 files changed, 22 insertions, 9 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AbstractDiffAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AbstractDiffAdapter.kt
index f006f9e3d..0ab1b46c3 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AbstractDiffAdapter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AbstractDiffAdapter.kt
@@ -14,15 +14,20 @@ import androidx.recyclerview.widget.RecyclerView
14 * Generic adapter that implements an [AsyncDifferConfig] and covers some of the basic boilerplate 14 * Generic adapter that implements an [AsyncDifferConfig] and covers some of the basic boilerplate
15 * code used in every [RecyclerView]. 15 * code used in every [RecyclerView].
16 * Type assigned to [Model] must inherit from [Object] in order to be compared properly. 16 * Type assigned to [Model] must inherit from [Object] in order to be compared properly.
17 * @param exact Decides whether each item will be compared by reference or by their contents
17 */ 18 */
18abstract class AbstractDiffAdapter<Model : Any, Holder : AbstractViewHolder<Model>> : 19abstract class AbstractDiffAdapter<Model : Any, Holder : AbstractViewHolder<Model>>(
19 ListAdapter<Model, Holder>(AsyncDifferConfig.Builder(DiffCallback<Model>()).build()) { 20 exact: Boolean = true
21) : ListAdapter<Model, Holder>(AsyncDifferConfig.Builder(DiffCallback<Model>(exact)).build()) {
20 override fun onBindViewHolder(holder: Holder, position: Int) = 22 override fun onBindViewHolder(holder: Holder, position: Int) =
21 holder.bind(currentList[position]) 23 holder.bind(currentList[position])
22 24
23 private class DiffCallback<Model> : DiffUtil.ItemCallback<Model>() { 25 private class DiffCallback<Model>(val exact: Boolean) : DiffUtil.ItemCallback<Model>() {
24 override fun areItemsTheSame(oldItem: Model & Any, newItem: Model & Any): Boolean { 26 override fun areItemsTheSame(oldItem: Model & Any, newItem: Model & Any): Boolean {
25 return oldItem === newItem 27 if (exact) {
28 return oldItem === newItem
29 }
30 return oldItem == newItem
26 } 31 }
27 32
28 @SuppressLint("DiffUtilEquals") 33 @SuppressLint("DiffUtilEquals")
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt
index b4f4d950f..85c8249e6 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt
@@ -30,7 +30,7 @@ import org.yuzu.yuzu_emu.utils.GameIconUtils
30import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder 30import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
31 31
32class GameAdapter(private val activity: AppCompatActivity) : 32class GameAdapter(private val activity: AppCompatActivity) :
33 AbstractDiffAdapter<Game, GameAdapter.GameViewHolder>() { 33 AbstractDiffAdapter<Game, GameAdapter.GameViewHolder>(exact = false) {
34 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameViewHolder { 34 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameViewHolder {
35 CardGameBinding.inflate(LayoutInflater.from(parent.context), parent, false) 35 CardGameBinding.inflate(LayoutInflater.from(parent.context), parent, false)
36 .also { return GameViewHolder(it) } 36 .also { return GameViewHolder(it) }
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt
index c8a4a2d17..6859b7780 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt
@@ -70,11 +70,19 @@ class Game(
70 } 70 }
71 71
72 override fun equals(other: Any?): Boolean { 72 override fun equals(other: Any?): Boolean {
73 if (other !is Game) { 73 if (this === other) return true
74 return false 74 if (javaClass != other?.javaClass) return false
75 } 75
76 other as Game
77
78 if (title != other.title) return false
79 if (path != other.path) return false
80 if (programId != other.programId) return false
81 if (developer != other.developer) return false
82 if (version != other.version) return false
83 if (isHomebrew != other.isHomebrew) return false
76 84
77 return hashCode() == other.hashCode() 85 return true
78 } 86 }
79 87
80 override fun hashCode(): Int { 88 override fun hashCode(): Int {