move video GC workaround into VideoElement
This commit is contained in:
parent
96cbf49579
commit
9da1540653
2 changed files with 11 additions and 3 deletions
|
@ -20,9 +20,6 @@ Ox.GarbageCollection = (function() {
|
||||||
Object.keys(Ox.UI.elements).forEach(function(id) {
|
Object.keys(Ox.UI.elements).forEach(function(id) {
|
||||||
var $element = Ox.UI.elements[id];
|
var $element = Ox.UI.elements[id];
|
||||||
if ($element && Ox.isUndefined($element.$element.data('oxid'))) {
|
if ($element && Ox.isUndefined($element.$element.data('oxid'))) {
|
||||||
//Chrome does not properly release resources, reset manually
|
|
||||||
//http://code.google.com/p/chromium/issues/detail?id=31014
|
|
||||||
$element.find('video').attr({src: ''});
|
|
||||||
$element.remove();
|
$element.remove();
|
||||||
delete Ox.UI.elements[id];
|
delete Ox.UI.elements[id];
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,6 +151,7 @@ Ox.VideoElement = function(options, self) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
timeupdate: function() {
|
timeupdate: function() {
|
||||||
|
//fixme: use setInterval(...,30); to be more accurate
|
||||||
if (self.video == this) {
|
if (self.video == this) {
|
||||||
if (self.items[self.currentItem]
|
if (self.items[self.currentItem]
|
||||||
&& self.items[self.currentItem].out
|
&& self.items[self.currentItem].out
|
||||||
|
@ -443,6 +444,16 @@ Ox.VideoElement = function(options, self) {
|
||||||
return that;
|
return that;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
that.superRemove = that.remove;
|
||||||
|
that.remove = function() {
|
||||||
|
//Chrome does not properly release resources, reset manually
|
||||||
|
//http://code.google.com/p/chromium/issues/detail?id=31014
|
||||||
|
self.$videos.forEach(function($video) {
|
||||||
|
$video.attr({src: ''});
|
||||||
|
});
|
||||||
|
return that.superRemove.apply(that, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
/*@
|
/*@
|
||||||
videoHeight <f> get videoHeight
|
videoHeight <f> get videoHeight
|
||||||
@*/
|
@*/
|
||||||
|
|
Loading…
Reference in a new issue