]> git.sesse.net Git - vlc/blobdiff - activex/test.html
* destroy some mutex'es once in a while to prevent memleaks. Suggested by a forumuser...
[vlc] / activex / test.html
index c5b350c8f4fe5dd4d58b74217b1f5f8cba7634ca..2dc4f696a7d956a918f2474b92cea6d9c607a034 100644 (file)
@@ -68,6 +68,7 @@ Insert MSComctlLib.Slider.2 activex control
 var prevState = 0;\r
 var monitorTimerId = 0;\r
 var sliderScrolling = false;\r
+var ignoreSliderChange = false;\r
 \r
 function updateVolume(deltaVol)\r
 {\r
@@ -80,54 +81,64 @@ function formatTime(timeVal)
     var timeHour = Math.round(timeVal / 1000);\r
     var timeSec = timeHour % 60;\r
     if( timeSec < 10 )\r
-       timeSec = '0'+timeSec;\r
+        timeSec = '0'+timeSec;\r
     timeHour = (timeHour - timeSec)/60;\r
     var timeMin = timeHour % 60;\r
     if( timeMin < 10 )\r
-       timeMin = '0'+timeMin;\r
+        timeMin = '0'+timeMin;\r
     timeHour = (timeHour - timeMin)/60;\r
     if( timeHour > 0 )\r
-       return timeHour+":"+timeMin+":"+timeSec;\r
+        return timeHour+":"+timeMin+":"+timeSec;\r
     else\r
-       return timeMin+":"+timeSec;\r
+        return timeMin+":"+timeSec;\r
 };\r
 function monitor()\r
 {\r
     var vlc = document.getElementById("vlc");\r
     var newState = vlc.input.state;\r
+    if( vlc.log.messages.count > 0 )\r
+    {\r
+        var iter = vlc.log.messages.iterator();\r
+        while( iter.hasNext )\r
+        {\r
+            var msg = iter.next();\r
+            alert( msg );\r
+        }\r
+        vlc.log.messages.clear();\r
+    }\r
     if( prevState != newState )\r
     {\r
-       if( newState == 0 )\r
-       {\r
-           // current media has stopped \r
-           onStop();\r
-       }\r
-       else if( newState == 1 )\r
-       {\r
-           // current media is openning/connecting\r
-           onOpen();\r
-       }\r
-       else if( newState == 2 )\r
-       {\r
-           // current media is buffering data\r
-           onBuffer();\r
-       }\r
-       else if( newState == 3 )\r
-       {\r
-           // current media is now playing\r
-           onPlay();\r
-       }\r
-       else if( vlc.input.state == 4 )\r
-       {\r
-           // current media is now paused\r
-           onPause();\r
-       }\r
-       prevState = newState;\r
+        if( newState == 0 )\r
+        {\r
+            // current media has stopped \r
+            onStop();\r
+        }\r
+        else if( newState == 1 )\r
+        {\r
+            // current media is openning/connecting\r
+            onOpen();\r
+        }\r
+        else if( newState == 2 )\r
+        {\r
+            // current media is buffering data\r
+            onBuffer();\r
+        }\r
+        else if( newState == 3 )\r
+        {\r
+            // current media is now playing\r
+            onPlay();\r
+        }\r
+        else if( vlc.input.state == 4 )\r
+        {\r
+            // current media is now paused\r
+            onPause();\r
+        }\r
+        prevState = newState;\r
     }\r
     else if( newState == 3 )\r
     {\r
-       // current media is playing\r
-       onPlaying();\r
+        // current media is playing\r
+        onPlaying();\r
     }\r
     monitorTimerId = setTimeout("monitor()", 1000);\r
 };\r
@@ -137,13 +148,16 @@ function monitor()
 function doGo(targetURL)\r
 {\r
     var vlc = document.getElementById("vlc");\r
-    var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");\r
+    var options = new Array(":vout=directx");\r
     vlc.playlist.clear();\r
-    vlc.playlist.add(targetURL, null, options);\r
+    //vlc.playlist.add(targetURL, null, options);\r
+    vlc.playlist.add(targetURL);\r
     vlc.playlist.play();\r
+    vlc.log.verbosity = 3;\r
+    vlc.log.messages.clear();\r
     if( monitorTimerId == 0 )\r
     {\r
-       monitor();\r
+        monitor();\r
     }\r
 };\r
 function doPlayOrPause()\r
@@ -151,15 +165,16 @@ function doPlayOrPause()
     var vlc = document.getElementById("vlc");\r
     if( vlc.playlist.isPlaying )\r
     {\r
-       vlc.playlist.togglePause();\r
+        vlc.playlist.togglePause();\r
     }\r
     else\r
     {\r
-       vlc.playlist.play();\r
-       if( monitorTimerId == 0 )\r
-       {\r
-           monitor();\r
-       }\r
+        vlc.log.messages.clear();\r
+        vlc.playlist.play();\r
+        if( monitorTimerId == 0 )\r
+        {\r
+            monitor();\r
+        }\r
     }\r
 };\r
 function doStop()\r
@@ -167,8 +182,8 @@ function doStop()
     document.getElementById("vlc").playlist.stop();\r
     if( monitorTimerId != 0 )\r
     {\r
-       clearTimeout(monitorTimerId);\r
-       monitorTimerId = 0;\r
+        clearTimeout(monitorTimerId);\r
+        monitorTimerId = 0;\r
     }\r
     onStop();\r
 };\r
@@ -206,26 +221,28 @@ function onPlaying()
 {\r
     if( ! sliderScrolling )\r
     {\r
-       var slider = document.getElementById("slider");\r
-       if( vlc.input.length > 0 )\r
-       {\r
-           // seekable media\r
-           slider.Enabled = true;\r
-           slider.Max = vlc.input.length/1000;\r
-           slider.Value = vlc.input.time/1000;\r
-           info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
-       }\r
-       else\r
-       {\r
-           // non-seekable "live" media\r
-           if( slider.Enabled )\r
-           {\r
-               slider.Value = slider.Min;\r
-               slider.Enabled = false;\r
-           }\r
+        var slider = document.getElementById("slider");\r
+        if( vlc.input.length > 0 )\r
+        {\r
+            // seekable media\r
+            slider.Enabled = true;\r
+            slider.Max = slider.width;\r
+            ignoreSliderChange = true;\r
+            slider.Value = vlc.input.position*slider.width;\r
+            ignoreSliderChange = false;\r
+            document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
+        }\r
+        else\r
+        {\r
+            // non-seekable "live" media\r
+            if( slider.Enabled )\r
+            {\r
+                slider.Value = slider.Min;\r
+                slider.Enabled = false;\r
+            }\r
             liveFeedRoll = liveFeedRoll & 3;\r
-            info.innerHTML = liveFeedText[liveFeedRoll++];\r
-       }\r
+            document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];\r
+        }\r
     }\r
 };\r
 function onPause()\r
@@ -234,6 +251,7 @@ function onPause()
 };\r
 function onStop()\r
 {\r
+    vlc.log.verbosity = -1;\r
     if( slider.Enabled )\r
     {\r
         slider.Value = slider.Min;\r
@@ -257,26 +275,31 @@ function onVLCStateChange()
 };\r
 function slider::Scroll()\r
 {\r
-    var newPos = slider.Value * 1000;\r
     var vlc = document.getElementById("vlc");\r
-    slider.Text = formatTime(newPos);\r
-    info.innerHTML = slider.Text+"/"+formatTime(vlc.input.length);\r
-    if( (vlc.input.state == 3) && (vlc.input.time != newPos) )\r
+    var slider = document.getElementById("slider");\r
+    var oldPos = vlc.input.position;\r
+    var newPos = slider.Value/slider.width;\r
+    if( (vlc.input.state == 3) && (oldPos != newPos) )\r
     {\r
-        vlc.input.time = newPos;\r
+        vlc.input.position = newPos;\r
+        slider.Text = formatTime(vlc.input.time);\r
+        document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);\r
     }\r
     sliderScrolling = true;\r
 };\r
 function slider::Change()\r
 {\r
-    var newPos = slider.Value * 1000;\r
+    var vlc = document.getElementById("vlc");\r
+    var slider = document.getElementById("slider");\r
+    var oldPos = vlc.input.position;\r
+    var newPos = slider.Value/slider.width;\r
     if( sliderScrolling )\r
     {\r
         sliderScrolling = false;\r
     }\r
-    else if( (vlc.input.state == 3) && (vlc.input.time != newPos) )\r
+    else if( !ignoreSliderChange && (vlc.input.state == 3) && (oldPos != newPos) )\r
     {\r
-        vlc.input.time = newPos;\r
+        vlc.input.position = newPos;\r
     }\r
 };\r
 //-->\r