Index: WebCore/html/HTMLCanvasElement.cpp |
=================================================================== |
--- WebCore/html/HTMLCanvasElement.cpp (revision 75415) |
+++ WebCore/html/HTMLCanvasElement.cpp (working copy) |
@@ -71,7 +71,6 @@ |
HTMLCanvasElement::HTMLCanvasElement(const QualifiedName& tagName, Document* document) |
: HTMLElement(tagName, document) |
- , m_observer(0) |
, m_size(DefaultWidth, DefaultHeight) |
, m_ignoreReset(false) |
, m_pageScaleFactor(document->frame() ? document->frame()->page()->chrome()->scaleFactor() : 1) |
@@ -93,8 +92,9 @@ |
HTMLCanvasElement::~HTMLCanvasElement() |
{ |
- if (m_observer) |
- m_observer->canvasDestroyed(this); |
+ HashSet<CanvasObserver*>::iterator end = m_observers.end(); |
+ for (HashSet<CanvasObserver*>::iterator it = m_observers.begin(); it != end; ++it) |
+ (*it)->canvasDestroyed(this); |
} |
void HTMLCanvasElement::parseMappedAttribute(Attribute* attr) |
@@ -117,6 +117,16 @@ |
return HTMLElement::createRenderer(arena, style); |
} |
+void HTMLCanvasElement::addObserver(CanvasObserver* observer) |
+{ |
+ m_observers.add(observer); |
+} |
+ |
+void HTMLCanvasElement::removeObserver(CanvasObserver* observer) |
+{ |
+ m_observers.remove(observer); |
+} |
+ |
void HTMLCanvasElement::setHeight(int value) |
{ |
setAttribute(heightAttr, String::number(value)); |
@@ -200,8 +210,9 @@ |
ro->repaintRectangle(enclosingIntRect(m_dirtyRect)); |
} |
- if (m_observer) |
- m_observer->canvasChanged(this, rect); |
+ HashSet<CanvasObserver*>::iterator end = m_observers.end(); |
+ for (HashSet<CanvasObserver*>::iterator it = m_observers.begin(); it != end; ++it) |
+ (*it)->canvasChanged(this, rect); |
} |
void HTMLCanvasElement::reset() |
@@ -238,8 +249,9 @@ |
} |
} |
- if (m_observer) |
- m_observer->canvasResized(this); |
+ HashSet<CanvasObserver*>::iterator end = m_observers.end(); |
+ for (HashSet<CanvasObserver*>::iterator it = m_observers.begin(); it != end; ++it) |
+ (*it)->canvasResized(this); |
} |
void HTMLCanvasElement::paint(GraphicsContext* context, const IntRect& r) |