#include "lib/cross.h"
#include "lib/player_video.h"
#include "lib/butler.h"
-#include <boost/bind.hpp>
+#include <boost/bind/bind.hpp>
#include <iostream>
#ifdef DCPOMATIC_OSX
#ifdef DCPOMATIC_LINUX
#include <GL/glu.h>
#include <GL/glext.h>
-#include <GL/glxext.h>
#endif
#ifdef DCPOMATIC_WINDOWS
#endif
using std::cout;
-using boost::shared_ptr;
+using std::shared_ptr;
using boost::optional;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
static void
_canvas = new wxGLCanvas (parent, wxID_ANY, 0, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE);
_canvas->Bind (wxEVT_PAINT, boost::bind(&GLVideoView::update, this));
_canvas->Bind (wxEVT_SIZE, boost::bind(boost::ref(Sized)));
- _canvas->Bind (wxEVT_CREATE, boost::bind(&GLVideoView::create, this));
_canvas->Bind (wxEVT_TIMER, boost::bind(&GLVideoView::check_for_butler_errors, this));
_timer.reset (new wxTimer(_canvas));
return;
}
}
+
+ if (!_thread.joinable()) {
+ _thread = boost::thread (boost::bind(&GLVideoView::thread, this));
+ }
+
request_one_shot ();
}
{
shared_ptr<PlayerVideo> pv = player_video().first;
if (pv) {
- set_image (pv->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true));
+ set_image (pv->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, true));
draw (pv->inter_position(), pv->inter_size());
+ _viewer->image_changed (pv);
}
}
store_current ();
}
-bool
+
+VideoView::NextFrameResult
GLVideoView::display_next_frame (bool non_blocking)
{
- bool const r = get_next_frame (non_blocking);
+ NextFrameResult const r = get_next_frame (non_blocking);
request_one_shot ();
return r;
}
+
void
GLVideoView::request_one_shot ()
{
_thread_work_condition.notify_all ();
}
-void
-GLVideoView::create ()
-{
- if (!_thread.joinable()) {
- _thread = boost::thread (boost::bind(&GLVideoView::thread, this));
- }
-}