Supporters update.
[dcpomatic.git] / src / wx / system_information_dialog.cc
index 894239b65d39c2951da638ab79aa81e5232b0a8a..addb89da4c7ab7d64882905b830b1f6651a23312 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2019-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
+#include "film_viewer.h"
+#include "gl_video_view.h"
 #include "system_information_dialog.h"
 #include "wx_util.h"
 
+
 #ifdef DCPOMATIC_OSX
 #include <OpenGL/glu.h>
 #include <OpenGL/glext.h>
 #include <GL/glext.h>
 #endif
 
+
 using std::string;
+using std::weak_ptr;
+using std::shared_ptr;
 
-SystemInformationDialog::SystemInformationDialog (wxWindow* parent)
+
+#if wxCHECK_VERSION(3, 1, 0)
+
+SystemInformationDialog::SystemInformationDialog (wxWindow* parent, weak_ptr<FilmViewer> weak_viewer)
        : TableDialog (parent, _("System information"), 2, 1, false)
 {
-       add (_("OpenGL version"), true);
-       char const * v = (char const *) glGetString (GL_VERSION);
-       if (v) {
-               add (std_to_wx(v), false);
-       } else {
+       auto viewer = weak_viewer.lock ();
+       shared_ptr<const GLVideoView> gl;
+       if (viewer) {
+               gl = std::dynamic_pointer_cast<const GLVideoView>(viewer->video_view());
+       }
+
+       if (!gl) {
+               add (_("OpenGL version"), true);
                add (_("unknown (OpenGL not enabled in DCP-o-matic)"), false);
+       } else {
+
+               auto information = gl->information();
+               auto add_string = [this, &information](GLenum name, wxString label) {
+                       add (label, true);
+                       auto i = information.find(name);
+                       if (i != information.end()) {
+                               add (std_to_wx(i->second), false);
+                       } else {
+                               add (_("unknown"), false);
+                       }
+               };
+
+               add_string (GL_VENDOR, _("Vendor"));
+               add_string (GL_RENDERER, _("Renderer"));
+               add_string (GL_VERSION, _("Version"));
+               add_string (GL_SHADING_LANGUAGE_VERSION, _("Shading language version"));
+
+               add (_("vsync"), true);
+               add (gl->vsync_enabled() ? _("enabled") : _("not enabled"), false);
        }
 
-       add (_("vsync"), true);
-#if !defined(DCPOMATIC_LINUX) || defined(DCPOMATIC_HAVE_GLX_SWAP_INTERVAL_EXT)
-       add (_("enabled"), false);
-#else
-        add (_("disabled"), false);
-#endif
        layout ();
 }
+
+#else
+
+SystemInformationDialog::SystemInformationDialog (wxWindow* parent, weak_ptr<FilmViewer>)
+       : TableDialog (parent, _("System information"), 2, 1, false)
+{
+       add (_("OpenGL version"), true);
+       add (_("OpenGL renderer not supported by this DCP-o-matic version"), false);
+}
+
+#endif