[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:57:17 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 48c024fb2481c498161656e2b2435a6c5212ad0d
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Mar 11 22:00:38 2002 +0000
i Fixed call back ordering problems when an error occurs.
More twiddling with scroll bars.
Re-implemented QPainter::drawTiledPixmap to use core graphics patterns. Currently this depends
on SPI. The performance boost is huge osx.macnn.com draws 40x faster now.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@725 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 9d7c03f..5644181 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,10 @@
+2002-03-11 Richard Williamson <rjw at apple.com>
+
+Re-implemented QPainter::drawTiledPixmap to use core graphics patterns. Currently this depends
+on SPI. The performance boost is huge osx.macnn.com draws 40x faster now.
+
+ * src/kwq/KWQPainter.mm: (QPainter::drawTiledPixmap):
+
2002-03-08 Richard Williamson <rjw at apple.com>
Re-implemented KWQFont to lazily request font from NSFontManager instead of
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 9d7c03f..5644181 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,10 @@
+2002-03-11 Richard Williamson <rjw at apple.com>
+
+Re-implemented QPainter::drawTiledPixmap to use core graphics patterns. Currently this depends
+on SPI. The performance boost is huge osx.macnn.com draws 40x faster now.
+
+ * src/kwq/KWQPainter.mm: (QPainter::drawTiledPixmap):
+
2002-03-08 Richard Williamson <rjw at apple.com>
Re-implemented KWQFont to lazily request font from NSFontManager instead of
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 9d7c03f..5644181 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,10 @@
+2002-03-11 Richard Williamson <rjw at apple.com>
+
+Re-implemented QPainter::drawTiledPixmap to use core graphics patterns. Currently this depends
+on SPI. The performance boost is huge osx.macnn.com draws 40x faster now.
+
+ * src/kwq/KWQPainter.mm: (QPainter::drawTiledPixmap):
+
2002-03-08 Richard Williamson <rjw at apple.com>
Re-implemented KWQFont to lazily request font from NSFontManager instead of
diff --git a/WebCore/kwq/KWQPainter.mm b/WebCore/kwq/KWQPainter.mm
index 3714e2e..a8c4052 100644
--- a/WebCore/kwq/KWQPainter.mm
+++ b/WebCore/kwq/KWQPainter.mm
@@ -398,6 +398,34 @@ void QPainter::drawPixmap( int x, int y, const QPixmap &pixmap,
_unlockFocus();
}
+#define USE_COLOR_TILING
+#ifdef USE_COLOR_TILING
+extern "C" {
+CG_EXTERN void CGContextSetPatternPhase(CGContextRef c, CGSize phase);
+}
+
+void QPainter::drawTiledPixmap( int x, int y, int w, int h,
+ const QPixmap &pixmap, int sx, int sy )
+{
+ NSColor *patternColor;
+ int sw = pixmap.width();
+ int sh = pixmap.height();
+ NSView *view = data->widget->getView();
+ NSPoint p = [view convertPoint: NSMakePoint (x, y) toView: nil];
+ CGContextRef cgContext;
+
+ [NSGraphicsContext saveGraphicsState];
+
+ cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
+ CGSize phase = { (float)(((int)p.x) % sw), (float)(((int)p.y) % sh) };
+ CGContextSetPatternPhase(cgContext, phase);
+ patternColor = [NSColor colorWithPatternImage: pixmap.nsimage];
+ [patternColor set];
+ [NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
+
+ [NSGraphicsContext restoreGraphicsState];
+}
+#else
static void drawTile( QPainter *p, int x, int y, int w, int h,
const QPixmap &pixmap, int xOffset, int yOffset )
{
@@ -423,7 +451,6 @@ static void drawTile( QPainter *p, int x, int y, int w, int h,
}
}
-
void QPainter::drawTiledPixmap( int x, int y, int w, int h,
const QPixmap &pixmap, int sx, int sy )
{
@@ -442,6 +469,7 @@ void QPainter::drawTiledPixmap( int x, int y, int w, int h,
drawTile( this, x, y, w, h, pixmap, sx, sy );
}
+#endif
#define FAST_CACHE_DRAWING 1
diff --git a/WebCore/src/kwq/KWQPainter.mm b/WebCore/src/kwq/KWQPainter.mm
index 3714e2e..a8c4052 100644
--- a/WebCore/src/kwq/KWQPainter.mm
+++ b/WebCore/src/kwq/KWQPainter.mm
@@ -398,6 +398,34 @@ void QPainter::drawPixmap( int x, int y, const QPixmap &pixmap,
_unlockFocus();
}
+#define USE_COLOR_TILING
+#ifdef USE_COLOR_TILING
+extern "C" {
+CG_EXTERN void CGContextSetPatternPhase(CGContextRef c, CGSize phase);
+}
+
+void QPainter::drawTiledPixmap( int x, int y, int w, int h,
+ const QPixmap &pixmap, int sx, int sy )
+{
+ NSColor *patternColor;
+ int sw = pixmap.width();
+ int sh = pixmap.height();
+ NSView *view = data->widget->getView();
+ NSPoint p = [view convertPoint: NSMakePoint (x, y) toView: nil];
+ CGContextRef cgContext;
+
+ [NSGraphicsContext saveGraphicsState];
+
+ cgContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
+ CGSize phase = { (float)(((int)p.x) % sw), (float)(((int)p.y) % sh) };
+ CGContextSetPatternPhase(cgContext, phase);
+ patternColor = [NSColor colorWithPatternImage: pixmap.nsimage];
+ [patternColor set];
+ [NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
+
+ [NSGraphicsContext restoreGraphicsState];
+}
+#else
static void drawTile( QPainter *p, int x, int y, int w, int h,
const QPixmap &pixmap, int xOffset, int yOffset )
{
@@ -423,7 +451,6 @@ static void drawTile( QPainter *p, int x, int y, int w, int h,
}
}
-
void QPainter::drawTiledPixmap( int x, int y, int w, int h,
const QPixmap &pixmap, int sx, int sy )
{
@@ -442,6 +469,7 @@ void QPainter::drawTiledPixmap( int x, int y, int w, int h,
drawTile( this, x, y, w, h, pixmap, sx, sy );
}
+#endif
#define FAST_CACHE_DRAWING 1
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 96fe13c..60b1a2c 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,20 @@
+2002-03-11 Richard Williamson <rjw at apple.com>
+
+ Fixed call back ordering problems when an error occurs.
+ More twiddling with scroll bars.
+
+ * WebView.subproj/IFBaseWebController.mm: (-[IFBaseWebController
+ createFrameNamed:for:inParent:]):
+ * WebView.subproj/IFDynamicScrollBarsView.h:
+ * WebView.subproj/IFDynamicScrollBarsView.m: (-[IFDynamicScrollBarsView
+ reflectScrolledClipView:]):
+ * WebView.subproj/IFWebFrame.h:
+ * WebView.subproj/IFWebFrame.mm: (-[IFWebFrame startLoading]), (-[IFWebFrame
+ reload:]), (-[IFWebFrame reset]), (-[IFWebFrame lastError]):
+ * WebView.subproj/IFWebFramePrivate.h:
+ * WebView.subproj/IFWebFramePrivate.mm: (-[IFWebFramePrivate dealloc]),
+ (-[IFWebFrame _checkLoadComplete:]), (-[IFWebFrame _setLastError:]):
+
2002-03-08 Richard Williamson <rjw at apple.com>
Fixed scroll bar recursion problems.
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 96fe13c..60b1a2c 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,20 @@
+2002-03-11 Richard Williamson <rjw at apple.com>
+
+ Fixed call back ordering problems when an error occurs.
+ More twiddling with scroll bars.
+
+ * WebView.subproj/IFBaseWebController.mm: (-[IFBaseWebController
+ createFrameNamed:for:inParent:]):
+ * WebView.subproj/IFDynamicScrollBarsView.h:
+ * WebView.subproj/IFDynamicScrollBarsView.m: (-[IFDynamicScrollBarsView
+ reflectScrolledClipView:]):
+ * WebView.subproj/IFWebFrame.h:
+ * WebView.subproj/IFWebFrame.mm: (-[IFWebFrame startLoading]), (-[IFWebFrame
+ reload:]), (-[IFWebFrame reset]), (-[IFWebFrame lastError]):
+ * WebView.subproj/IFWebFramePrivate.h:
+ * WebView.subproj/IFWebFramePrivate.mm: (-[IFWebFramePrivate dealloc]),
+ (-[IFWebFrame _checkLoadComplete:]), (-[IFWebFrame _setLastError:]):
+
2002-03-08 Richard Williamson <rjw at apple.com>
Fixed scroll bar recursion problems.
diff --git a/WebKit/WebView.subproj/IFBaseWebController.mm b/WebKit/WebView.subproj/IFBaseWebController.mm
index 0517caa..ca554fa 100644
--- a/WebKit/WebView.subproj/IFBaseWebController.mm
+++ b/WebKit/WebView.subproj/IFBaseWebController.mm
@@ -8,6 +8,7 @@
#import <WebKit/IFWebDataSourcePrivate.h>
#import <WebKit/IFWebFrame.h>
#import <WebKit/IFWebFramePrivate.h>
+#import <WebKit/IFDynamicScrollBarsView.h>
#import <WebKit/IFException.h>
#import <WebKit/WebKitDebug.h>
@@ -145,7 +146,9 @@ static id IFLoadProgressMake()
[childView _setController: self];
[childDataSource _setController: self];
- scrollView = [[[NSScrollView alloc] initWithFrame: NSMakeRect(0,0,0,0)] autorelease];
+ scrollView = [[[IFDynamicScrollBarsView alloc] initWithFrame: NSMakeRect(0,0,0,0)] autorelease];
+ [scrollView setHasVerticalScroller: NO];
+ [scrollView setHasHorizontalScroller: NO];
[childView _setFrameScrollView: scrollView];
return newFrame;
diff --git a/WebKit/WebView.subproj/IFDynamicScrollBarsView.h b/WebKit/WebView.subproj/IFDynamicScrollBarsView.h
index 49e2a03..9e570ea 100644
--- a/WebKit/WebView.subproj/IFDynamicScrollBarsView.h
+++ b/WebKit/WebView.subproj/IFDynamicScrollBarsView.h
@@ -8,7 +8,9 @@
#import <Cocoa/Cocoa.h>
- at interface IFDynamicScrollBarsView : NSScrollView {
+ at interface IFDynamicScrollBarsView : NSScrollView
+{
+ bool breakRecursionCycle;
}
@end
diff --git a/WebKit/WebView.subproj/IFDynamicScrollBarsView.m b/WebKit/WebView.subproj/IFDynamicScrollBarsView.m
index 73e17dc..fe04c34 100644
--- a/WebKit/WebView.subproj/IFDynamicScrollBarsView.m
+++ b/WebKit/WebView.subproj/IFDynamicScrollBarsView.m
@@ -19,15 +19,19 @@
{
id dview = [self documentView];
- if( clipView == [self contentView] ) {
+ if( clipView == [self contentView] && breakRecursionCycle == NO ) {
BOOL scrollsVertically;
BOOL scrollsHorizontally;
+ breakRecursionCycle = YES;
+
scrollsVertically = [dview bounds].size.height > [self frame].size.height;
scrollsHorizontally = [dview bounds].size.width > [self frame].size.width;
[self setHasVerticalScroller: scrollsVertically];
[self setHasHorizontalScroller: scrollsHorizontally];
+
+ breakRecursionCycle = NO;
}
[super reflectScrolledClipView: clipView];
}
diff --git a/WebKit/WebView.subproj/IFWebFrame.h b/WebKit/WebView.subproj/IFWebFrame.h
index 0069590..8cee633 100644
--- a/WebKit/WebView.subproj/IFWebFrame.h
+++ b/WebKit/WebView.subproj/IFWebFrame.h
@@ -74,6 +74,10 @@
/*
+*/
+- (IFError *)lastError;
+
+/*
This method removes references the underlying resources.
FIXME: I think this should be private.
*/
diff --git a/WebKit/WebView.subproj/IFWebFrame.mm b/WebKit/WebView.subproj/IFWebFrame.mm
index 6ae6931..5bd3c7d 100644
--- a/WebKit/WebView.subproj/IFWebFrame.mm
+++ b/WebKit/WebView.subproj/IFWebFrame.mm
@@ -155,6 +155,8 @@
{
IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ [self _setLastError: nil];
+
// Force refresh is irrelevant, as this will always be the first load.
// The controller will transition the provisional data source to the
// committed data source.
@@ -175,6 +177,8 @@
{
IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ [self _setLastError: nil];
+
[data->dataSource startLoading: forceRefresh];
}
@@ -187,4 +191,10 @@
[data setView: nil];
}
+- (IFError *)lastError
+{
+ IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ return data->lastError;
+}
+
@end
diff --git a/WebKit/WebView.subproj/IFWebFramePrivate.h b/WebKit/WebView.subproj/IFWebFramePrivate.h
index 44c26c8..d8bc222 100644
--- a/WebKit/WebView.subproj/IFWebFramePrivate.h
+++ b/WebKit/WebView.subproj/IFWebFramePrivate.h
@@ -14,8 +14,7 @@ typedef enum {
IFWEBFRAMESTATE_UNINITIALIZED = 1,
IFWEBFRAMESTATE_PROVISIONAL = 2,
IFWEBFRAMESTATE_COMMITTED = 3,
- IFWEBFRAMESTATE_COMPLETE = 4,
- IFWEBFRAMESTATE_ERROR = 5
+ IFWEBFRAMESTATE_COMPLETE = 4
} IFWebFrameState;
@interface IFWebFramePrivate : NSObject
@@ -27,6 +26,7 @@ typedef enum {
void *renderFramePart;
id <IFWebController>controller;
IFWebFrameState state;
+ IFError *lastError;
}
- (void)setName: (NSString *)n;
@@ -52,4 +52,5 @@ typedef enum {
- (IFWebFrameState)_state;
- (void)_setState: (IFWebFrameState)newState;
- (BOOL)_checkLoadComplete: (IFError *)error;
+- (void)_setLastError: (IFError *)error;
@end
diff --git a/WebKit/WebView.subproj/IFWebFramePrivate.mm b/WebKit/WebView.subproj/IFWebFramePrivate.mm
index 5ccc60d..56866d8 100644
--- a/WebKit/WebView.subproj/IFWebFramePrivate.mm
+++ b/WebKit/WebView.subproj/IFWebFramePrivate.mm
@@ -7,6 +7,7 @@
#import <WebKit/IFWebDataSourcePrivate.h>
#import <WebKit/IFWebViewPrivate.h>
#import <WebKit/IFWebFramePrivate.h>
+#import <WebKit/IFError.h>
#import <WebKit/WebKitDebug.h>
@@ -17,6 +18,7 @@
- (void)dealloc
{
+ [lastError autorelease];
[name autorelease];
[view autorelease];
[dataSource autorelease];
@@ -147,13 +149,7 @@
if ([self _state] == IFWEBFRAMESTATE_COMPLETE)
return YES;
- if (error){
- [self _setState: IFWEBFRAMESTATE_ERROR];
- [[self controller] locationChangeDone: error forFrame: self];
- return YES;
- }
-
- if ([self _state] == IFWEBFRAMESTATE_PROVISIONAL)
+ if ([self _state] == IFWEBFRAMESTATE_PROVISIONAL && error == nil)
return NO;
// Check all children first.
@@ -167,6 +163,9 @@
}
if (![[self dataSource] isLoading]){
+ if (error)
+ [self _setLastError: error];
+
[self _setState: IFWEBFRAMESTATE_COMPLETE];
[[self dataSource] _part]->end();
@@ -182,6 +181,13 @@
return NO;
}
+- (void)_setLastError: (IFError *)error
+{
+ IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+
+ [data->lastError release];
+ data->lastError = [error retain];
+}
@end
diff --git a/WebKit/WebView.subproj/WebDynamicScrollBarsView.h b/WebKit/WebView.subproj/WebDynamicScrollBarsView.h
index 49e2a03..9e570ea 100644
--- a/WebKit/WebView.subproj/WebDynamicScrollBarsView.h
+++ b/WebKit/WebView.subproj/WebDynamicScrollBarsView.h
@@ -8,7 +8,9 @@
#import <Cocoa/Cocoa.h>
- at interface IFDynamicScrollBarsView : NSScrollView {
+ at interface IFDynamicScrollBarsView : NSScrollView
+{
+ bool breakRecursionCycle;
}
@end
diff --git a/WebKit/WebView.subproj/WebDynamicScrollBarsView.m b/WebKit/WebView.subproj/WebDynamicScrollBarsView.m
index 73e17dc..fe04c34 100644
--- a/WebKit/WebView.subproj/WebDynamicScrollBarsView.m
+++ b/WebKit/WebView.subproj/WebDynamicScrollBarsView.m
@@ -19,15 +19,19 @@
{
id dview = [self documentView];
- if( clipView == [self contentView] ) {
+ if( clipView == [self contentView] && breakRecursionCycle == NO ) {
BOOL scrollsVertically;
BOOL scrollsHorizontally;
+ breakRecursionCycle = YES;
+
scrollsVertically = [dview bounds].size.height > [self frame].size.height;
scrollsHorizontally = [dview bounds].size.width > [self frame].size.width;
[self setHasVerticalScroller: scrollsVertically];
[self setHasHorizontalScroller: scrollsHorizontally];
+
+ breakRecursionCycle = NO;
}
[super reflectScrolledClipView: clipView];
}
diff --git a/WebKit/WebView.subproj/WebFrame.h b/WebKit/WebView.subproj/WebFrame.h
index 0069590..8cee633 100644
--- a/WebKit/WebView.subproj/WebFrame.h
+++ b/WebKit/WebView.subproj/WebFrame.h
@@ -74,6 +74,10 @@
/*
+*/
+- (IFError *)lastError;
+
+/*
This method removes references the underlying resources.
FIXME: I think this should be private.
*/
diff --git a/WebKit/WebView.subproj/WebFrame.m b/WebKit/WebView.subproj/WebFrame.m
index 6ae6931..5bd3c7d 100644
--- a/WebKit/WebView.subproj/WebFrame.m
+++ b/WebKit/WebView.subproj/WebFrame.m
@@ -155,6 +155,8 @@
{
IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ [self _setLastError: nil];
+
// Force refresh is irrelevant, as this will always be the first load.
// The controller will transition the provisional data source to the
// committed data source.
@@ -175,6 +177,8 @@
{
IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ [self _setLastError: nil];
+
[data->dataSource startLoading: forceRefresh];
}
@@ -187,4 +191,10 @@
[data setView: nil];
}
+- (IFError *)lastError
+{
+ IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+ return data->lastError;
+}
+
@end
diff --git a/WebKit/WebView.subproj/WebFramePrivate.h b/WebKit/WebView.subproj/WebFramePrivate.h
index 44c26c8..d8bc222 100644
--- a/WebKit/WebView.subproj/WebFramePrivate.h
+++ b/WebKit/WebView.subproj/WebFramePrivate.h
@@ -14,8 +14,7 @@ typedef enum {
IFWEBFRAMESTATE_UNINITIALIZED = 1,
IFWEBFRAMESTATE_PROVISIONAL = 2,
IFWEBFRAMESTATE_COMMITTED = 3,
- IFWEBFRAMESTATE_COMPLETE = 4,
- IFWEBFRAMESTATE_ERROR = 5
+ IFWEBFRAMESTATE_COMPLETE = 4
} IFWebFrameState;
@interface IFWebFramePrivate : NSObject
@@ -27,6 +26,7 @@ typedef enum {
void *renderFramePart;
id <IFWebController>controller;
IFWebFrameState state;
+ IFError *lastError;
}
- (void)setName: (NSString *)n;
@@ -52,4 +52,5 @@ typedef enum {
- (IFWebFrameState)_state;
- (void)_setState: (IFWebFrameState)newState;
- (BOOL)_checkLoadComplete: (IFError *)error;
+- (void)_setLastError: (IFError *)error;
@end
diff --git a/WebKit/WebView.subproj/WebFramePrivate.m b/WebKit/WebView.subproj/WebFramePrivate.m
index 5ccc60d..56866d8 100644
--- a/WebKit/WebView.subproj/WebFramePrivate.m
+++ b/WebKit/WebView.subproj/WebFramePrivate.m
@@ -7,6 +7,7 @@
#import <WebKit/IFWebDataSourcePrivate.h>
#import <WebKit/IFWebViewPrivate.h>
#import <WebKit/IFWebFramePrivate.h>
+#import <WebKit/IFError.h>
#import <WebKit/WebKitDebug.h>
@@ -17,6 +18,7 @@
- (void)dealloc
{
+ [lastError autorelease];
[name autorelease];
[view autorelease];
[dataSource autorelease];
@@ -147,13 +149,7 @@
if ([self _state] == IFWEBFRAMESTATE_COMPLETE)
return YES;
- if (error){
- [self _setState: IFWEBFRAMESTATE_ERROR];
- [[self controller] locationChangeDone: error forFrame: self];
- return YES;
- }
-
- if ([self _state] == IFWEBFRAMESTATE_PROVISIONAL)
+ if ([self _state] == IFWEBFRAMESTATE_PROVISIONAL && error == nil)
return NO;
// Check all children first.
@@ -167,6 +163,9 @@
}
if (![[self dataSource] isLoading]){
+ if (error)
+ [self _setLastError: error];
+
[self _setState: IFWEBFRAMESTATE_COMPLETE];
[[self dataSource] _part]->end();
@@ -182,6 +181,13 @@
return NO;
}
+- (void)_setLastError: (IFError *)error
+{
+ IFWebFramePrivate *data = (IFWebFramePrivate *)_framePrivate;
+
+ [data->lastError release];
+ data->lastError = [error retain];
+}
@end
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list