summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-06-03 17:10:53 +0100
committerCarl Hetherington <cth@carlh.net>2019-06-03 17:10:53 +0100
commitd1e19450e051d70531a6c1f0973bfd6cfd64319b (patch)
treec9c3e407501fc170cc3fd77f37700bd7809b5e60 /src
parent7851658223286410d5afb1e32bc44b4012ec5f55 (diff)
More accurate reporting of whether vsync is enabled.
Diffstat (limited to 'src')
-rw-r--r--src/tools/dcpomatic.cc2
-rw-r--r--src/wx/gl_video_view.cc4
-rw-r--r--src/wx/gl_video_view.h5
-rw-r--r--src/wx/system_information_dialog.cc27
-rw-r--r--src/wx/system_information_dialog.h7
5 files changed, 35 insertions, 10 deletions
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index 1e93977d7..2fe5187b4 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -994,7 +994,7 @@ private:
void view_system_information ()
{
if (!_system_information_dialog) {
- _system_information_dialog = new SystemInformationDialog (this);
+ _system_information_dialog = new SystemInformationDialog (this, _film_viewer);
}
_system_information_dialog->Show ();
diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc
index d16ac4441..0e8e459d8 100644
--- a/src/wx/gl_video_view.cc
+++ b/src/wx/gl_video_view.cc
@@ -51,6 +51,7 @@ using boost::optional;
GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
: VideoView (viewer)
+ , _vsync_enabled (false)
{
_canvas = new wxGLCanvas (parent, wxID_ANY, 0, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE);
_context = new wxGLContext (_canvas);
@@ -62,6 +63,7 @@ GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
/* Enable vsync */
Display* dpy = wxGetX11Display();
glXSwapIntervalEXT (dpy, DefaultScreen(dpy), 1);
+ _vsync_enabled = true;
}
#endif
@@ -69,6 +71,7 @@ GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
if (_canvas->IsExtensionSupported("WGL_EXT_swap_control")) {
/* Enable vsync */
wglSwapIntervalEXT (1);
+ _vsync_enabled = true;
}
#endif
@@ -77,6 +80,7 @@ GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
/* Enable vsync */
GLint swapInterval = 1;
CGLSetParameter (CGLGetCurrentContext(), kCGLCPSwapInterval, &swapInterval);
+ _vsync_enabled = true;
#endif
glGenTextures (1, &_id);
diff --git a/src/wx/gl_video_view.h b/src/wx/gl_video_view.h
index c10f32335..ba4c7cfdc 100644
--- a/src/wx/gl_video_view.h
+++ b/src/wx/gl_video_view.h
@@ -38,6 +38,10 @@ public:
}
void update ();
+ bool vsync_enabled () const {
+ return _vsync_enabled;
+ }
+
private:
void paint ();
void draw ();
@@ -46,4 +50,5 @@ private:
wxGLContext* _context;
GLuint _id;
boost::optional<dcp::Size> _size;
+ bool _vsync_enabled;
};
diff --git a/src/wx/system_information_dialog.cc b/src/wx/system_information_dialog.cc
index 894239b65..0e1916202 100644
--- a/src/wx/system_information_dialog.cc
+++ b/src/wx/system_information_dialog.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -20,6 +20,8 @@
#include "system_information_dialog.h"
#include "wx_util.h"
+#include "gl_video_view.h"
+#include "film_viewer.h"
#ifdef DCPOMATIC_OSX
#include <OpenGL/glu.h>
@@ -30,8 +32,10 @@
#endif
using std::string;
+using boost::weak_ptr;
+using boost::shared_ptr;
-SystemInformationDialog::SystemInformationDialog (wxWindow* parent)
+SystemInformationDialog::SystemInformationDialog (wxWindow* parent, weak_ptr<FilmViewer> weak_viewer)
: TableDialog (parent, _("System information"), 2, 1, false)
{
add (_("OpenGL version"), true);
@@ -42,11 +46,20 @@ SystemInformationDialog::SystemInformationDialog (wxWindow* parent)
add (_("unknown (OpenGL not enabled in DCP-o-matic)"), false);
}
+
add (_("vsync"), true);
-#if !defined(DCPOMATIC_LINUX) || defined(DCPOMATIC_HAVE_GLX_SWAP_INTERVAL_EXT)
- add (_("enabled"), false);
-#else
- add (_("disabled"), false);
-#endif
+ shared_ptr<FilmViewer> viewer = weak_viewer.lock ();
+
+ if (!viewer) {
+ add (_("unknown"), false);
+ } else {
+ GLVideoView* gl = dynamic_cast<GLVideoView*>(viewer->panel());
+ if (!gl) {
+ add (_("unknown"), false);
+ } else {
+ add (gl->vsync_enabled() ? _("enabled") : _("not enabled"), false);
+ }
+ }
+
layout ();
}
diff --git a/src/wx/system_information_dialog.h b/src/wx/system_information_dialog.h
index b82c6341b..63c70fba5 100644
--- a/src/wx/system_information_dialog.h
+++ b/src/wx/system_information_dialog.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -19,10 +19,13 @@
*/
#include "table_dialog.h"
+#include <boost/weak_ptr.hpp>
+
+class FilmViewer;
class SystemInformationDialog : public TableDialog
{
public:
- SystemInformationDialog (wxWindow* parent);
+ SystemInformationDialog (wxWindow* parent, boost::weak_ptr<FilmViewer> viewer);
};