projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move _state_timer into VideoView.
[dcpomatic.git]
/
src
/
wx
/
simple_video_view.cc
diff --git
a/src/wx/simple_video_view.cc
b/src/wx/simple_video_view.cc
index 619a35cce0d80bf6b5a6cbefa3780058e63d255d..437aed4fa136f38fe70ab898932d451be7c04c31 100644
(file)
--- a/
src/wx/simple_video_view.cc
+++ b/
src/wx/simple_video_view.cc
@@
-56,7
+56,7
@@
SimpleVideoView::SimpleVideoView (FilmViewer* viewer, wxWindow* parent)
void
SimpleVideoView::paint ()
{
void
SimpleVideoView::paint ()
{
- _
viewer->state_timer()
.set("paint-panel");
+ _
state_timer
.set("paint-panel");
wxPaintDC dc (_panel);
dcp::Size const out_size = _viewer->out_size ();
wxPaintDC dc (_panel);
dcp::Size const out_size = _viewer->out_size ();
@@
-125,41
+125,41
@@
SimpleVideoView::paint ()
}
if (_viewer->outline_content()) {
}
if (_viewer->outline_content()) {
- Position<int> inter_position = _viewer->inter_position ();
- dcp::Size inter_size = _viewer->inter_size ();
wxPen p (wxColour (255, 0, 0), 2);
dc.SetPen (p);
dc.SetBrush (*wxTRANSPARENT_BRUSH);
wxPen p (wxColour (255, 0, 0), 2);
dc.SetPen (p);
dc.SetBrush (*wxTRANSPARENT_BRUSH);
- dc.DrawRectangle (
inter_position.x, inter_position.y + (panel_size.GetHeight() - out_size.height) / 2, inter_size.width,
inter_size.height);
+ dc.DrawRectangle (
_inter_position.x, _inter_position.y + (panel_size.GetHeight() - out_size.height) / 2, _inter_size.width, _
inter_size.height);
}
}
- _
viewer->state_timer()
.unset();
+ _
state_timer
.unset();
}
void
SimpleVideoView::update ()
{
}
void
SimpleVideoView::update ()
{
+ _state_timer.set ("update-view");
_panel->Refresh ();
_panel->Update ();
_panel->Refresh ();
_panel->Update ();
+ _state_timer.unset ();
}
void
SimpleVideoView::timer ()
{
}
void
SimpleVideoView::timer ()
{
- if (!_viewer->
film() || !_viewer->
playing()) {
+ if (!_viewer->playing()) {
return;
}
return;
}
-
get
(false);
+
display_next_frame
(false);
DCPTime const next = _viewer->position() + _viewer->one_video_frame();
DCPTime const next = _viewer->position() + _viewer->one_video_frame();
- if (next >=
_viewer->film()->
length()) {
+ if (next >= length()) {
_viewer->stop ();
_viewer->Finished ();
return;
}
LOG_DEBUG_PLAYER("%1 -> %2; delay %3", next.seconds(), _viewer->time().seconds(), max((next.seconds() - _viewer->time().seconds()) * 1000, 1.0));
_viewer->stop ();
_viewer->Finished ();
return;
}
LOG_DEBUG_PLAYER("%1 -> %2; delay %3", next.seconds(), _viewer->time().seconds(), max((next.seconds() - _viewer->time().seconds()) * 1000, 1.0));
- _timer.Start (
_viewer->
time_until_next_frame(), wxTIMER_ONE_SHOT);
+ _timer.Start (time_until_next_frame(), wxTIMER_ONE_SHOT);
if (_viewer->butler()) {
_viewer->butler()->rethrow ();
if (_viewer->butler()) {
_viewer->butler()->rethrow ();
@@
-169,49
+169,55
@@
SimpleVideoView::timer ()
void
SimpleVideoView::start ()
{
void
SimpleVideoView::start ()
{
+ VideoView::start ();
timer ();
}
/** Try to get a frame from the butler and display it.
timer ();
}
/** Try to get a frame from the butler and display it.
- * @param
lazy
true to return false quickly if no video is available quickly (i.e. we are waiting for the butler).
+ * @param
non_blocking
true to return false quickly if no video is available quickly (i.e. we are waiting for the butler).
* false to ask the butler to block until it has video (unless it is suspended).
* @return true on success, false if we did nothing because it would have taken too long.
*/
bool
* false to ask the butler to block until it has video (unless it is suspended).
* @return true on success, false if we did nothing because it would have taken too long.
*/
bool
-SimpleVideoView::
get (bool lazy
)
+SimpleVideoView::
display_next_frame (bool non_blocking
)
{
{
- bool r = get_next_frame (
lazy
);
+ bool r = get_next_frame (
non_blocking
);
if (!r) {
if (!r) {
- if (
lazy
) {
+ if (
non_blocking
) {
/* No video available; return saying we failed */
return false;
} else {
/* Player was suspended; come back later */
/* No video available; return saying we failed */
return false;
} else {
/* Player was suspended; come back later */
- signal_manager->when_idle (boost::bind(&SimpleVideoView::
get
, this, false));
+ signal_manager->when_idle (boost::bind(&SimpleVideoView::
display_next_frame
, this, false));
return false;
}
}
display_player_video ();
return false;
}
}
display_player_video ();
+ try {
+ _viewer->butler()->rethrow ();
+ } catch (DecodeError& e) {
+ error_dialog (get(), e.what());
+ }
+
return true;
}
void
SimpleVideoView::display_player_video ()
{
return true;
}
void
SimpleVideoView::display_player_video ()
{
- if (!
_player_video
.first) {
+ if (!
player_video()
.first) {
set_image (shared_ptr<Image>());
_viewer->refresh_view ();
return;
}
set_image (shared_ptr<Image>());
_viewer->refresh_view ();
return;
}
- if (_viewer->playing() && (_viewer->time() -
_player_video.second) > _viewer->
one_video_frame()) {
+ if (_viewer->playing() && (_viewer->time() -
player_video().second) >
one_video_frame()) {
/* Too late; just drop this frame before we try to get its image (which will be the time-consuming
part if this frame is J2K).
*/
/* Too late; just drop this frame before we try to get its image (which will be the time-consuming
part if this frame is J2K).
*/
- _viewer->_video_position = _player_video.second;
- ++_viewer->_dropped;
+ add_dropped ();
return;
}
return;
}
@@
-233,21
+239,20
@@
SimpleVideoView::display_player_video ()
* image and convert it (from whatever the user has said it is) to RGB.
*/
* image and convert it (from whatever the user has said it is) to RGB.
*/
- _
viewer->_
state_timer.set ("get image");
+ _state_timer.set ("get image");
set_image (
set_image (
-
_player_video
.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true)
+
player_video()
.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true)
);
);
- _
viewer->_
state_timer.set ("ImageChanged");
- _viewer->ImageChanged (
_player_video
.first);
- _
viewer->_
state_timer.unset ();
+ _state_timer.set ("ImageChanged");
+ _viewer->ImageChanged (
player_video()
.first);
+ _state_timer.unset ();
- _viewer->_video_position = _player_video.second;
- _viewer->_inter_position = _player_video.first->inter_position ();
- _viewer->_inter_size = _player_video.first->inter_size ();
+ _inter_position = player_video().first->inter_position ();
+ _inter_size = player_video().first->inter_size ();
_viewer->refresh_view ();
_viewer->refresh_view ();
- _viewer->
_closed_captions_dialog
->update (_viewer->time());
+ _viewer->
closed_captions_dialog()
->update (_viewer->time());
}
}