post merge fun

This commit is contained in:
Roy Frostig 2009-07-17 20:05:07 -07:00
parent 1b5d678982
commit c751721781
2 changed files with 26 additions and 56 deletions

View File

@ -40,11 +40,10 @@
let Ci = Components.interfaces;
const kBrowserViewZoomLevelMin = 0.2;
const kBrowserViewZoomLevelMax = 4.0;
const kBrowserViewZoomLevelPrecision = 10000;
function BrowserView(container, visibleRect) {
Util.bindAll(this);
this.init(container, visibleRect);
}
/**
* A BrowserView maintains state of the viewport (browser, zoom level,
@ -133,9 +132,10 @@ function BrowserView(container, visibleRect) {
* hopefully no one but us will touch. See BrowserView.Util.getViewportStateFromBrowser()
* for the property name.
*/
const kBrowserViewZoomLevelMin = 0.2;
const kBrowserViewZoomLevelMax = 4.0;
const kBrowserViewZoomLevelPrecision = 10000;
function BrowserView(container, visibleRect) {
Util.bindAll(this);
this.init(container, visibleRect);
}
// -----------------------------------------------------------
@ -250,14 +250,6 @@ BrowserView.prototype = {
this._renderMode = 0;
this._tileManager = new TileManager(this._appendTile, this._removeTile, this);
this.setVisibleRect(visibleRect);
// !!! --- RESIZE HACK BEGIN -----
// remove this eventually
this._resizeHack = {
maxSeenW: 0,
maxSeenH: 0
};
// !!! --- RESIZE HACK END -------
},
setVisibleRect: function setVisibleRect(r) {
@ -483,12 +475,6 @@ BrowserView.prototype = {
let [scrollX, scrollY] = BrowserView.Util.getContentScrollValues(browser);
let clientRects = ev.clientRects;
// !!! --- RESIZE HACK BEGIN -----
// remove this, cf explanation in loop below
let hack = this._resizeHack;
let hackSizeChanged = false;
// !!! --- RESIZE HACK END -------
let rects = [];
// loop backwards to avoid xpconnect penalty for .length
for (let i = clientRects.length - 1; i >= 0; --i) {
@ -503,32 +489,18 @@ BrowserView.prototype = {
if (r.right < 0 || r.bottom < 0)
continue;
// !!! --- RESIZE HACK BEGIN -----
// remove this. this is where we make 'lazy' calculations
// that hint at a browser size change and fake the size change
// event dispach
if (r.right > hack.maxW) {
hack.maxW = rect.right;
hackSizeChanged = true;
}
if (r.bottom > hack.maxH) {
hack.maxH = rect.bottom;
hackSizeChanged = true;
}
// !!! --- RESIZE HACK END -------
try {
r.restrictTo(vs.viewportRect);
rects.push(r);
} catch(ex) { dump("fail:(\n"); }
} catch(ex) { dump("fail\n"); }
}
tm.dirtyRects(rects, this.isRendering());
},
// !!! --- RESIZE HACK BEGIN -----
simulateMozAfterSizeChange: function simulateMozAfterSizeChange(width, height) {
let [w, h] = getBrowserDimensions(this._browser);
simulateMozAfterSizeChange: function simulateMozAfterSizeChange() {
let [w, h] = BrowserView.Util.getBrowserDimensions(this._browser);
let ev = document.createEvent("MouseEvents");
ev.initMouseEvent("FakeMozAfterSizeChange", false, false, window, 0, w, h, 0, 0, false, false, false, false, 0, null);
this._browser.dispatchEvent(ev);
@ -643,22 +615,15 @@ BrowserView.prototype = {
let bvs = this._browserViewportState;
let vis = this._visibleRect;
// !!! --- RESIZE HACK BEGIN -----
// We want to uncomment this for perf, but we can't with the hack in place
// because the mozAfterPaint gives us rects that we use to create the
// fake mozAfterResize event, so we can't just clear things.
/*
if (dirtyAll) {
// We're about to mark the entire viewport dirty, so we can clear any
// queued afterPaint events that will cause redundant draws
BrowserView.Util.getBrowserDOMWindowUtils(this._browser).clearMozAfterPaintEvents();
}
*/
// !!! --- RESIZE HACK END -------
if (bvs) {
BrowserView.Util.resizeContainerToViewport(this._container, bvs.viewportRect);
if (dirtyAll) {
// We're about to mark the entire viewport dirty, so we can clear any
// queued afterPaint events that will cause redundant draws
BrowserView.Util.getBrowserDOMWindowUtils(this._browser).clearMozAfterPaintEvents();
}
this._tileManager.viewportChangeHandler(bvs.viewportRect,
BrowserView.Util.visibleRectToCriticalRect(vis, bvs),
viewportSizeChanged,
@ -676,7 +641,11 @@ BrowserView.prototype = {
// XXX The above causes a trace abort, and this function is called back in the tight
// render-heavy loop in TileManager, so even though what we do below isn't so proper
// and takes longer on the Platform/C++ emd, it's better than causing a trace abort
// in our tight loop. :/
// in our tight loop.
//
// But this also overwrites some style already set on the canvas in Tile constructor.
// Hack fail...
//
//canvas.setAttribute("style", "position: absolute; left: " + tile.boundRect.left + "px; " + "top: " + tile.boundRect.top + "px;");
this._container.appendChild(canvas);

View File

@ -71,7 +71,7 @@ function TileManager(appendTile, removeTile, browserView) {
// tile cache holds tile objects and pools them under a given capacity
let self = this;
this._tileCache = new TileManager.TileCache(function(tile) { self._removeTileSafe(tile); },
-1, -1, 110);
-1, -1, 200);
// Rectangle within the viewport that is visible to the user. It is "critical"
// in the sense that it must be rendered as soon as it becomes dirty
@ -109,7 +109,7 @@ TileManager.prototype = {
// !!! --- DEBUG BEGIN -----
dump("***vphandler***\n");
dump(viewportRect.toString() + "\n");
dump(criticalRect.toString() + "\n");
dump((criticalRect ? criticalRect.toString() : "null") + "\n");
dump(boundsSizeChanged + "\n");
dump(dirtyAll + "\n***************\n");
// !!! --- DEBUG END -------
@ -251,7 +251,8 @@ TileManager.prototype = {
if (cr)
tc.forEachIntersectingRect(cr, false, f, this);
this._holdRect(destCriticalRect);
if (destCriticalRect)
this._holdRect(destCriticalRect);
if (cr)
cr.copyFrom(destCriticalRect);
@ -819,7 +820,7 @@ TileManager.Tile.prototype = {
ctx.translate(x, y);
ctx.drawWindow(sourceContent,
rect.left, rect.top,
rect.width, rect.height,
rect.right - rect.left, rect.bottom - rect.top,
"grey",
(ctx.DRAWWINDOW_DO_NOT_FLUSH | ctx.DRAWWINDOW_DRAW_CARET));