aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-11-03 20:16:38 +0100
committerDavid Robillard <d@drobilla.net>2019-11-03 20:16:38 +0100
commitb4e7a7cc20eec3784a70e53bd772f401d61acdb7 (patch)
treed6dda586d7d403e1cc5ef4c70392751512626b85 /src
parente05826ac5d24d916be78cd594f172041f8dcc8bf (diff)
downloadjalv-b4e7a7cc20eec3784a70e53bd772f401d61acdb7.tar.gz
jalv-b4e7a7cc20eec3784a70e53bd772f401d61acdb7.tar.bz2
jalv-b4e7a7cc20eec3784a70e53bd772f401d61acdb7.zip
Use screen refresh rate with Gtk3 and Qt5
Diffstat (limited to 'src')
-rw-r--r--src/jalv.c3
-rw-r--r--src/jalv_console.c6
-rw-r--r--src/jalv_gtk.c13
-rw-r--r--src/jalv_gtkmm2.cpp6
-rw-r--r--src/jalv_internal.h3
-rw-r--r--src/jalv_qt.cpp11
6 files changed, 40 insertions, 2 deletions
diff --git a/src/jalv.c b/src/jalv.c
index 1b4365c..adee072 100644
--- a/src/jalv.c
+++ b/src/jalv.c
@@ -1019,8 +1019,7 @@ jalv_open(Jalv* const jalv, int* argc, char*** argv)
if (jalv->opts.update_rate == 0.0) {
/* Calculate a reasonable UI update frequency. */
- jalv->ui_update_hz = jalv->sample_rate / jalv->midi_buf_size * 2.0f;
- jalv->ui_update_hz = MAX(25.0f, jalv->ui_update_hz);
+ jalv->ui_update_hz = jalv_ui_refresh_rate(jalv);
} else {
/* Use user-specified UI update rate. */
jalv->ui_update_hz = jalv->opts.update_rate;
diff --git a/src/jalv_console.c b/src/jalv_console.c
index 413a524..7d11714 100644
--- a/src/jalv_console.c
+++ b/src/jalv_console.c
@@ -250,6 +250,12 @@ jalv_run_custom_ui(Jalv* jalv)
return false;
}
+float
+jalv_ui_refresh_rate(Jalv* jalv)
+{
+ return 30.0f;
+}
+
int
jalv_open_ui(Jalv* jalv)
{
diff --git a/src/jalv_gtk.c b/src/jalv_gtk.c
index dca5241..8ca8258 100644
--- a/src/jalv_gtk.c
+++ b/src/jalv_gtk.c
@@ -1153,6 +1153,19 @@ jalv_discover_ui(ZIX_UNUSED Jalv* jalv)
return TRUE;
}
+float
+jalv_ui_refresh_rate(Jalv* jalv)
+{
+#if GTK_MAJOR_VERSION == 2
+ return 30.0f;
+#else
+ GdkDisplay* const display = gdk_display_get_default();
+ GdkMonitor* const monitor = gdk_display_get_primary_monitor(display);
+
+ return (float)gdk_monitor_get_refresh_rate(monitor);
+#endif
+}
+
int
jalv_open_ui(Jalv* jalv)
{
diff --git a/src/jalv_gtkmm2.cpp b/src/jalv_gtkmm2.cpp
index 49b9aa9..3f5a0e9 100644
--- a/src/jalv_gtkmm2.cpp
+++ b/src/jalv_gtkmm2.cpp
@@ -58,6 +58,12 @@ jalv_discover_ui(Jalv* jalv)
return true;
}
+float
+jalv_ui_refresh_rate(Jalv* jalv)
+{
+ return 30.0f;
+}
+
int
jalv_open_ui(Jalv* jalv)
{
diff --git a/src/jalv_internal.h b/src/jalv_internal.h
index 3fd7b05..4d25109 100644
--- a/src/jalv_internal.h
+++ b/src/jalv_internal.h
@@ -392,6 +392,9 @@ jalv_native_ui_type(void);
bool
jalv_discover_ui(Jalv* jalv);
+float
+jalv_ui_refresh_rate(Jalv* jalv);
+
int
jalv_open_ui(Jalv* jalv);
diff --git a/src/jalv_qt.cpp b/src/jalv_qt.cpp
index 80141f2..5084c03 100644
--- a/src/jalv_qt.cpp
+++ b/src/jalv_qt.cpp
@@ -31,6 +31,7 @@
# include <QMainWindow>
# include <QMenu>
# include <QMenuBar>
+# include <QScreen>
# include <QScrollArea>
# include <QStyle>
# include <QTimer>
@@ -673,6 +674,16 @@ jalv_discover_ui(Jalv* jalv)
return true;
}
+float
+jalv_ui_refresh_rate(Jalv* jalv)
+{
+#if QT_VERSION >= 0x050000
+ return (float)QGuiApplication::primaryScreen()->refreshRate();
+#else
+ return 30.0f;
+#endif
+}
+
int
jalv_open_ui(Jalv* jalv)
{