Merge pull request #57335 from jordigcs/display-refresh-rate
This commit is contained in:
commit
d235c1bb19
19 changed files with 172 additions and 0 deletions
|
|
@ -161,6 +161,16 @@ int DisplayServerAndroid::screen_get_dpi(int p_screen) const {
|
|||
return godot_io_java->get_screen_dpi();
|
||||
}
|
||||
|
||||
float DisplayServerAndroid::screen_get_refresh_rate(int p_screen) const {
|
||||
GodotIOJavaWrapper *godot_io_java = OS_Android::get_singleton()->get_godot_io_java();
|
||||
if (!godot_io_java) {
|
||||
ERR_PRINT("An error occured while trying to get the screen refresh rate.");
|
||||
return SCREEN_REFRESH_RATE_FALLBACK;
|
||||
}
|
||||
|
||||
return godot_io_java->get_screen_refresh_rate(SCREEN_REFRESH_RATE_FALLBACK);
|
||||
}
|
||||
|
||||
bool DisplayServerAndroid::screen_is_touchscreen(int p_screen) const {
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ public:
|
|||
virtual Size2i screen_get_size(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
|
||||
virtual Rect2i screen_get_usable_rect(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
|
||||
virtual int screen_get_dpi(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
|
||||
virtual float screen_get_refresh_rate(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
|
||||
virtual bool screen_is_touchscreen(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
|
||||
|
||||
virtual void virtual_keyboard_show(const String &p_existing_text, const Rect2 &p_screen_rect = Rect2(), bool p_multiline = false, int p_max_length = -1, int p_cursor_start = -1, int p_cursor_end = -1) override;
|
||||
|
|
|
|||
|
|
@ -226,6 +226,14 @@ public class GodotIO {
|
|||
return (int)(metrics.density * 160f);
|
||||
}
|
||||
|
||||
public double getScreenRefreshRate(double fallback) {
|
||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
||||
if (display != null) {
|
||||
return display.getRefreshRate();
|
||||
}
|
||||
return fallback;
|
||||
}
|
||||
|
||||
public int[] screenGetUsableRect() {
|
||||
DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
|
||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ GodotIOJavaWrapper::GodotIOJavaWrapper(JNIEnv *p_env, jobject p_godot_io_instanc
|
|||
_get_locale = p_env->GetMethodID(cls, "getLocale", "()Ljava/lang/String;");
|
||||
_get_model = p_env->GetMethodID(cls, "getModel", "()Ljava/lang/String;");
|
||||
_get_screen_DPI = p_env->GetMethodID(cls, "getScreenDPI", "()I");
|
||||
_get_screen_refresh_rate = p_env->GetMethodID(cls, "getScreenRefreshRate", "(D)D");
|
||||
_screen_get_usable_rect = p_env->GetMethodID(cls, "screenGetUsableRect", "()[I"),
|
||||
_get_unique_id = p_env->GetMethodID(cls, "getUniqueID", "()Ljava/lang/String;");
|
||||
_show_keyboard = p_env->GetMethodID(cls, "showKeyboard", "(Ljava/lang/String;ZIII)V");
|
||||
|
|
@ -136,6 +137,19 @@ int GodotIOJavaWrapper::get_screen_dpi() {
|
|||
}
|
||||
}
|
||||
|
||||
float GodotIOJavaWrapper::get_screen_refresh_rate(float fallback) {
|
||||
if (_get_screen_refresh_rate) {
|
||||
JNIEnv *env = get_jni_env();
|
||||
if (env == nullptr) {
|
||||
ERR_PRINT("An error occured while trying to get screen refresh rate.");
|
||||
return fallback;
|
||||
}
|
||||
return (float)env->CallDoubleMethod(godot_io_instance, _get_screen_refresh_rate, (double)fallback);
|
||||
}
|
||||
ERR_PRINT("An error occured while trying to get the screen refresh rate.");
|
||||
return fallback;
|
||||
}
|
||||
|
||||
void GodotIOJavaWrapper::screen_get_usable_rect(int (&p_rect_xywh)[4]) {
|
||||
if (_screen_get_usable_rect) {
|
||||
JNIEnv *env = get_jni_env();
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ private:
|
|||
jmethodID _get_locale = 0;
|
||||
jmethodID _get_model = 0;
|
||||
jmethodID _get_screen_DPI = 0;
|
||||
jmethodID _get_screen_refresh_rate = 0;
|
||||
jmethodID _screen_get_usable_rect = 0;
|
||||
jmethodID _get_unique_id = 0;
|
||||
jmethodID _show_keyboard = 0;
|
||||
|
|
@ -71,6 +72,7 @@ public:
|
|||
String get_locale();
|
||||
String get_model();
|
||||
int get_screen_dpi();
|
||||
float get_screen_refresh_rate(float fallback);
|
||||
void screen_get_usable_rect(int (&p_rect_xywh)[4]);
|
||||
String get_unique_id();
|
||||
bool has_vk();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue