diff options
Diffstat (limited to 'Source/WebCore/html/canvas/WebGLContextGroup.cpp')
-rw-r--r-- | Source/WebCore/html/canvas/WebGLContextGroup.cpp | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/Source/WebCore/html/canvas/WebGLContextGroup.cpp b/Source/WebCore/html/canvas/WebGLContextGroup.cpp index 6f182e22d..9ddef158c 100644 --- a/Source/WebCore/html/canvas/WebGLContextGroup.cpp +++ b/Source/WebCore/html/canvas/WebGLContextGroup.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011-2017 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -24,25 +24,19 @@ */ #include "config.h" +#include "WebGLContextGroup.h" #if ENABLE(WEBGL) -#include "WebGLContextGroup.h" - #include "GraphicsContext3D.h" -#include "WebGLRenderingContext.h" +#include "WebGLRenderingContextBase.h" #include "WebGLSharedObject.h" namespace WebCore { -PassRefPtr<WebGLContextGroup> WebGLContextGroup::create() -{ - RefPtr<WebGLContextGroup> contextGroup = adoptRef(new WebGLContextGroup()); - return contextGroup.release(); -} - -WebGLContextGroup::WebGLContextGroup() +Ref<WebGLContextGroup> WebGLContextGroup::create() { + return adoptRef(*new WebGLContextGroup); } WebGLContextGroup::~WebGLContextGroup() @@ -50,49 +44,46 @@ WebGLContextGroup::~WebGLContextGroup() detachAndRemoveAllObjects(); } -GraphicsContext3D* WebGLContextGroup::getAGraphicsContext3D() +GraphicsContext3D& WebGLContextGroup::getAGraphicsContext3D() { ASSERT(!m_contexts.isEmpty()); - HashSet<WebGLRenderingContext*>::iterator it = m_contexts.begin(); - return (*it)->graphicsContext3D(); + return *(*m_contexts.begin())->graphicsContext3D(); } -void WebGLContextGroup::addContext(WebGLRenderingContext* context) +void WebGLContextGroup::addContext(WebGLRenderingContextBase& context) { - m_contexts.add(context); + m_contexts.add(&context); } -void WebGLContextGroup::removeContext(WebGLRenderingContext* context) +void WebGLContextGroup::removeContext(WebGLRenderingContextBase& context) { // We must call detachAndRemoveAllObjects before removing the last context. - if (m_contexts.size() == 1 && m_contexts.contains(context)) + if (m_contexts.size() == 1 && m_contexts.contains(&context)) detachAndRemoveAllObjects(); - m_contexts.remove(context); + m_contexts.remove(&context); } -void WebGLContextGroup::removeObject(WebGLSharedObject* object) +void WebGLContextGroup::removeObject(WebGLSharedObject& object) { - m_groupObjects.remove(object); + m_groupObjects.remove(&object); } -void WebGLContextGroup::addObject(WebGLSharedObject* object) +void WebGLContextGroup::addObject(WebGLSharedObject& object) { - m_groupObjects.add(object); + m_groupObjects.add(&object); } void WebGLContextGroup::detachAndRemoveAllObjects() { - while (!m_groupObjects.isEmpty()) { - HashSet<WebGLSharedObject*>::iterator it = m_groupObjects.begin(); - (*it)->detachContextGroup(); - } + while (!m_groupObjects.isEmpty()) + (*m_groupObjects.begin())->detachContextGroup(); } -void WebGLContextGroup::loseContextGroup(WebGLRenderingContext::LostContextMode mode) +void WebGLContextGroup::loseContextGroup(WebGLRenderingContextBase::LostContextMode mode) { - for (HashSet<WebGLRenderingContext*>::iterator it = m_contexts.begin(); it != m_contexts.end(); ++it) - (*it)->loseContextImpl(mode); + for (auto& context : m_contexts) + context->loseContextImpl(mode); detachAndRemoveAllObjects(); } |