| 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)
|
|
|