Account for DPI scale factors when calculating some sizes (#2118).
[dcpomatic.git] / src / wx / gl_video_view.cc
index 2f5b27da8bdd6c35ec3e6c68e0ae047543442c28..559cff4136c1bfea40459e4b2892ecb2abe5d7be 100644 (file)
@@ -103,12 +103,15 @@ GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
 void
 GLVideoView::size_changed (wxSizeEvent const& ev)
 {
-       _canvas_size = ev.GetSize ();
+       auto const scale = _canvas->GetDPIScaleFactor();
+       int const width = std::round(ev.GetSize().GetWidth() * scale);
+       int const height = std::round(ev.GetSize().GetHeight() * scale);
+       _canvas_size = { width, height };
+       LOG_GENERAL("GLVideoView canvas size changed to %1x%2", width, height);
        Sized ();
 }
 
 
-
 GLVideoView::~GLVideoView ()
 {
        boost::this_thread::disable_interruption dis;
@@ -622,7 +625,7 @@ GLVideoView::set_image (shared_ptr<const PlayerVideo> pv)
                glBufferSubData (GL_ARRAY_BUFFER, 0, video.size(), video.vertices());
                check_gl_error ("glBufferSubData (video)");
 
-               const auto border = Rectangle(canvas_size, inter_position.x, inter_position.y, inter_size);
+               const auto border = Rectangle(canvas_size, inter_position.x + x_offset, inter_position.y + y_offset, inter_size);
                glBufferSubData (GL_ARRAY_BUFFER, 8 * 5 * sizeof(float), border.size(), border.vertices());
                check_gl_error ("glBufferSubData (border)");
        }