[longomatch] Only show event drawings for the primary event camera



commit 1103030b6e500573032d5bb5665b5d040e28daa6
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Thu Mar 26 13:10:02 2015 +0100

    Only show event drawings for the primary event camera

 LongoMatch.Services/Services/PlayerController.cs |    3 +-
 Tests/Services/TestPlayerController.cs           |   41 +++++++++++++++++++++-
 2 files changed, 42 insertions(+), 2 deletions(-)
---
diff --git a/LongoMatch.Services/Services/PlayerController.cs 
b/LongoMatch.Services/Services/PlayerController.cs
index 7c04485..692b074 100644
--- a/LongoMatch.Services/Services/PlayerController.cs
+++ b/LongoMatch.Services/Services/PlayerController.cs
@@ -838,7 +838,8 @@ namespace LongoMatch.Services
                                                var drawings = EventDrawings;
                                                if (drawings != null) {
                                                        /* Check if the event has drawings to display */
-                                                       FrameDrawing fd = drawings.FirstOrDefault (f => 
f.Render > videoTS && f.Render <= currentTime);
+                                                       FrameDrawing fd = drawings.FirstOrDefault (f => 
f.Render > videoTS &&
+                                                                         f.Render <= currentTime && 
f.CameraIndex == CamerasVisible [0]);
                                                        if (fd != null) {
                                                                LoadPlayDrawing (fd);
                                                        }
diff --git a/Tests/Services/TestPlayerController.cs b/Tests/Services/TestPlayerController.cs
index 52e8b9d..4584c49 100644
--- a/Tests/Services/TestPlayerController.cs
+++ b/Tests/Services/TestPlayerController.cs
@@ -65,7 +65,9 @@ namespace Tests.Services
                        mfs.Add (new MediaFile { FilePath = "test1", VideoWidth = 320, VideoHeight = 240, Par 
= 1 });
                        mfs.Add (new MediaFile { FilePath = "test2", VideoWidth = 320, VideoHeight = 240, Par 
= 1 });
 
-                       evt = new TimelineEvent { Start = new Time (100), Stop = new Time (200) };
+                       evt = new TimelineEvent { Start = new Time (100), Stop = new Time (200),
+                               CamerasVisible = new List<int> { 0 }
+                       };
                        plImage = new PlaylistImage (Utils.LoadImageFromFile (), new Time (5));
                        playlist = new Playlist ();
                        playlist.Elements.Add (new PlaylistPlayElement (evt));
@@ -710,6 +712,43 @@ namespace Tests.Services
                        Assert.AreEqual (1, nextLoaded);
                }
 
+               [Test ()]
+               public void TestEventDrawings ()
+               {
+                       FrameDrawing dr, drSent = null;
+
+                       player.LoadDrawingsEvent += (frameDrawing) => {
+                               drSent = frameDrawing;
+                       };
+
+                       dr = new FrameDrawing { Render = evt.Start + 50,
+                               CameraIndex = 0
+                       };
+                       currentTime = evt.Start;
+                       PreparePlayer ();
+
+                       /* Checks drawings are loaded when the clock reaches the render time */
+                       evt.Drawings.Add (dr);
+                       player.LoadEvent (mfs, evt, evt.Start, true);
+                       Assert.IsTrue (player.Playing);
+                       currentTime = dr.Render;
+                       player.Seek (currentTime, true, false);
+                       Assert.IsFalse (player.Playing);
+                       Assert.AreEqual (dr, drSent); 
+                       player.Play ();
+                       Assert.IsNull (drSent); 
+
+                       /* Check only drawings for the first camera are loaded */
+                       dr.CameraIndex = 1;
+                       currentTime = evt.Start;
+                       player.LoadEvent (mfs, evt, evt.Start, true);
+                       Assert.IsTrue (player.Playing);
+                       currentTime = dr.Render;
+                       player.Seek (currentTime, true, false);
+                       Assert.IsTrue (player.Playing);
+                       Assert.IsNull (drSent); 
+               }
+
        }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]