diff options
author | Nicolas Roard <nicolasroard@google.com> | 2012-04-06 11:35:50 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2012-04-06 14:03:59 -0700 |
commit | 2e510fd5b5a30f1315c272d44ae3aa4cba355498 (patch) | |
tree | db3af5f32855d329856f190c3509ae11ae519851 /Source/WebCore/platform/graphics/android/utils | |
parent | c88c88907b618e468ec3928b06a3a31d4f99b9c6 (diff) | |
download | external_webkit-2e510fd5b5a30f1315c272d44ae3aa4cba355498.zip external_webkit-2e510fd5b5a30f1315c272d44ae3aa4cba355498.tar.gz external_webkit-2e510fd5b5a30f1315c272d44ae3aa4cba355498.tar.bz2 |
Reorganize platform/graphics/android
Change-Id: Idc67155cfa99784dcd931e705336bfa063ecae46
Diffstat (limited to 'Source/WebCore/platform/graphics/android/utils')
3 files changed, 211 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/android/utils/ClassTracker.cpp b/Source/WebCore/platform/graphics/android/utils/ClassTracker.cpp new file mode 100644 index 0000000..98e33d9 --- /dev/null +++ b/Source/WebCore/platform/graphics/android/utils/ClassTracker.cpp @@ -0,0 +1,121 @@ +/* + * Copyright 2010, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * 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 THE COPYRIGHT HOLDERS ``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 THE COPYRIGHT OWNER 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 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#define LOG_TAG "ClassTracker" +#define LOG_NDEBUG 1 + +#include "config.h" +#include "ClassTracker.h" + +#include "AndroidLog.h" +#include "LayerAndroid.h" +#include "TilesManager.h" + +#include <wtf/text/CString.h> + +#define DEBUG_LAYERS +#undef DEBUG_LAYERS + +namespace WebCore { + +ClassTracker* ClassTracker::instance() +{ + if (!gInstance) + gInstance = new ClassTracker(); + return gInstance; +} + +ClassTracker* ClassTracker::gInstance = 0; + +void ClassTracker::increment(String name) +{ + android::Mutex::Autolock lock(m_lock); + int value = 0; + if (m_classes.contains(name)) + value = m_classes.get(name); + + m_classes.set(name, value + 1); +} + +void ClassTracker::decrement(String name) +{ + android::Mutex::Autolock lock(m_lock); + int value = 0; + if (m_classes.contains(name)) + value = m_classes.get(name); + + m_classes.set(name, value - 1); +} + +void ClassTracker::add(LayerAndroid* layer) +{ + android::Mutex::Autolock lock(m_lock); + m_layers.append(layer); +} + +void ClassTracker::remove(LayerAndroid* layer) +{ + android::Mutex::Autolock lock(m_lock); + m_layers.remove(m_layers.find(layer)); +} + +void ClassTracker::show() +{ + android::Mutex::Autolock lock(m_lock); + ALOGD("*** Tracking %d classes ***", m_classes.size()); + for (HashMap<String, int>::iterator iter = m_classes.begin(); iter != m_classes.end(); ++iter) { + ALOGD("class %s has %d instances", + iter->first.latin1().data(), iter->second); + } + ALOGD("*** %d Layers ***", m_layers.size()); + int nbTextures = 0; + int nbAllocatedTextures = 0; + int nbLayerTextures = 0; + int nbAllocatedLayerTextures = 0; + float textureSize = 256 * 256 * 4 / 1024.0 / 1024.0; + TilesManager::instance()->gatherTexturesNumbers(&nbTextures, &nbAllocatedTextures, + &nbLayerTextures, &nbAllocatedLayerTextures); + ALOGD("*** textures: %d/%d (%.2f Mb), layer textures: %d/%d (%.2f Mb) : total used %.2f Mb", + nbAllocatedTextures, nbTextures, + nbAllocatedTextures * textureSize, + nbAllocatedLayerTextures, nbLayerTextures, + nbAllocatedLayerTextures * textureSize, + (nbAllocatedTextures + nbAllocatedLayerTextures) * textureSize); + +#ifdef DEBUG_LAYERS + for (unsigned int i = 0; i < m_layers.size(); i++) { + LayerAndroid* layer = m_layers[i]; + ALOGD("[%d/%d] layer %x (%.2f, %.2f) of type %d, refcount(%d) has texture %x has image ref %x (%x) root: %x parent: %x", + i, m_layers.size(), layer, + layer->getWidth(), layer->getHeight(), + layer->type(), layer->getRefCnt(), + layer->texture(), layer->imageRef(), + layer->imageTexture(), (LayerAndroid*) layer->getRootLayer(), + (LayerAndroid*) layer->getParent()); + } +#endif +} + +} // namespace WebCore diff --git a/Source/WebCore/platform/graphics/android/utils/ClassTracker.h b/Source/WebCore/platform/graphics/android/utils/ClassTracker.h new file mode 100644 index 0000000..d169883 --- /dev/null +++ b/Source/WebCore/platform/graphics/android/utils/ClassTracker.h @@ -0,0 +1,58 @@ +/* + * Copyright 2010, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * 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 THE COPYRIGHT HOLDERS ``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 THE COPYRIGHT OWNER 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 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ClassTracker_h +#define ClassTracker_h + +#include <utils/threads.h> +#include <wtf/HashMap.h> +#include <wtf/text/StringHash.h> + +#define DEBUG_COUNT // Add instances tracking +#undef DEBUG_COUNT + +namespace WebCore { + +class LayerAndroid; + +class ClassTracker { +public: + static ClassTracker* instance(); + void show(); + void increment(String name); + void decrement(String name); + void add(LayerAndroid*); + void remove(LayerAndroid*); +private: + ClassTracker() {}; + HashMap<String, int> m_classes; + Vector<LayerAndroid*> m_layers; + static ClassTracker* gInstance; + android::Mutex m_lock; +}; + +} + +#endif // ClassTracker_h diff --git a/Source/WebCore/platform/graphics/android/utils/TestExport.h b/Source/WebCore/platform/graphics/android/utils/TestExport.h new file mode 100644 index 0000000..15d7cc3 --- /dev/null +++ b/Source/WebCore/platform/graphics/android/utils/TestExport.h @@ -0,0 +1,32 @@ +/* + * Copyright 2011, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * 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 THE COPYRIGHT HOLDERS ``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 THE COPYRIGHT OWNER 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 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TestExport_h +#define TestExport_h + +// classes used outside of the .so, in tests, are declared with this attribute +#define TEST_EXPORT __attribute__((visibility("default"))) + +#endif // #define TestExport_h |