drop game stats class. directly call stats methods

This commit is contained in:
Emmanuel Hansen 2023-07-08 20:02:18 +00:00
parent 7f2c0a2bc2
commit c6dbeb1bd0
4 changed files with 20 additions and 40 deletions

View File

@ -116,41 +116,28 @@ namespace LibRyujinx
ignoreMissingServices);
}
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceGetGameStats")]
public static JObjectLocalRef JniGetGameStats(JEnvRef jEnv, JObjectLocalRef jObj)
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceGetGameFifo")]
public static JDouble JniGetGameFifo(JEnvRef jEnv, JObjectLocalRef jObj)
{
var stats = GetGameStats();
var stats = SwitchDevice.EmulationContext?.Statistics.GetFifoPercent() ?? 0;
var javaClassName = GetCCharSequence("org/ryujinx/android/viewmodels/GameStats");
return stats;
}
JEnvValue value = jEnv.Environment;
ref JNativeInterface jInterface = ref value.Functions;
IntPtr findClassPtr = jInterface.FindClassPointer;
IntPtr newGlobalRefPtr = jInterface.NewGlobalRefPointer;
IntPtr getFieldIdPtr = jInterface.GetFieldIdPointer;
IntPtr getMethodPtr = jInterface.GetMethodIdPointer;
IntPtr newObjectPtr = jInterface.NewObjectPointer;
IntPtr setDoubleFieldPtr = jInterface.SetDoubleFieldPointer;
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceGetGameFrameTime")]
public static JDouble JniGetGameFrameTime(JEnvRef jEnv, JObjectLocalRef jObj)
{
var stats = SwitchDevice.EmulationContext?.Statistics.GetGameFrameTime() ?? 0;
return stats;
}
var findClass = findClassPtr.GetUnsafeDelegate<FindClassDelegate>();
var newGlobalRef = newGlobalRefPtr.GetUnsafeDelegate<NewGlobalRefDelegate>();
var getFieldId = getFieldIdPtr.GetUnsafeDelegate<GetFieldIdDelegate>();
var getMethod = getMethodPtr.GetUnsafeDelegate<GetMethodIdDelegate>();
var newObject = newObjectPtr.GetUnsafeDelegate<NewObjectDelegate>();
var setDoubleField = setDoubleFieldPtr.GetUnsafeDelegate<SetDoubleFieldDelegate>();
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceGetGameFrameRate")]
public static JDouble JniGetGameFrameRate(JEnvRef jEnv, JObjectLocalRef jObj)
{
var stats = SwitchDevice.EmulationContext?.Statistics.GetGameFrameRate() ?? 0;
var javaClass = findClass(jEnv, javaClassName);
var newGlobal = newGlobalRef(jEnv, javaClass._value);
var constructor = getMethod(jEnv, javaClass, GetCCharSequence("<init>"), GetCCharSequence("()V"));
var newObj = newObject(jEnv, javaClass, constructor, 0);
setDoubleField(jEnv, newObj, getFieldId(jEnv, javaClass, GetCCharSequence("Fifo"), GetCCharSequence("D")), stats.Fifo);
setDoubleField(jEnv, newObj, getFieldId(jEnv, javaClass, GetCCharSequence("GameFps"), GetCCharSequence("D")), stats.GameFps);
setDoubleField(jEnv, newObj, getFieldId(jEnv, javaClass, GetCCharSequence("GameTime"), GetCCharSequence("D")), stats.GameTime);
return newObj;
return stats;
}
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceLoad")]

View File

@ -152,8 +152,7 @@ class GameHost(context: Context?, val controller: GameController, val mainViewMo
c++
if (c >= 1000) {
c = 0
var stats = _nativeRyujinx.deviceGetGameStats()
mainViewModel.updateStats(stats.Fifo, stats.GameFps, stats.GameTime)
mainViewModel.updateStats(_nativeRyujinx.deviceGetGameFifo(), _nativeRyujinx.deviceGetGameFrameRate(), _nativeRyujinx.deviceGetGameFrameTime())
}
}
}

View File

@ -2,7 +2,6 @@ package org.ryujinx.android
import android.view.Surface
import org.ryujinx.android.viewmodels.GameInfo
import org.ryujinx.android.viewmodels.GameStats
import java.io.FileDescriptor
class RyujinxNative {
@ -31,7 +30,9 @@ class RyujinxNative {
): Boolean
external fun deviceLoad(game: String): Boolean
external fun deviceGetGameStats(): GameStats
external fun deviceGetGameFrameRate(): Double
external fun deviceGetGameFrameTime(): Double
external fun deviceGetGameFifo(): Double
external fun deviceGetGameInfo(fileDescriptor: Int, isXci:Boolean): GameInfo
external fun deviceGetGameInfoFromPath(path: String): GameInfo
external fun deviceLoadDescriptor(fileDescriptor: Int, isXci:Boolean): Boolean

View File

@ -1,7 +0,0 @@
package org.ryujinx.android.viewmodels
class GameStats {
var Fifo = 0.0
var GameFps = 0.0
var GameTime = 0.0
}