Changeset 3997
- Timestamp:
- 07/13/12 16:26:15 (10 months ago)
- Location:
- branches/active/gui_enhancements/engine/core/gui/librocket
- Files:
-
- 2 edited
-
librocketrenderinterface.cpp (modified) (3 diffs)
-
librocketrenderinterface.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/active/gui_enhancements/engine/core/gui/librocket/librocketrenderinterface.cpp
r3996 r3997 42 42 43 43 LibRocketRenderInterface::~LibRocketRenderInterface() { 44 freeTextures(); 44 45 } 45 46 46 47 void LibRocketRenderInterface::RenderGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, Rocket::Core::TextureHandle texture, const Rocket::Core::Vector2f& translation) { 48 GeometryCallData geometryCallData; 49 50 for(int i = 0; i < num_vertices; i++) { 51 geometryCallData.vertices.push_back(vertices[i]); 52 } 53 54 for(int i = 0; i < num_indices; i++) { 55 geometryCallData.indices.push_back(indices[i]); 56 } 57 58 geometryCallData.textureHandle = texture; 59 geometryCallData.translation = translation; 60 61 if(m_geometryCalls.empty()) { 62 GeometryCall geometryCall; 63 geometryCall.callChain.push(geometryCallData); 64 65 m_geometryCalls.push(geometryCall); 66 } else { 67 GeometryCall& geometryCall = m_geometryCalls.front(); 68 geometryCall.callChain.push(geometryCallData); 69 } 47 70 } 48 71 … … 65 88 66 89 void LibRocketRenderInterface::SetScissorRegion(int x, int y, int width, int height) { 90 GeometryCall gc; 91 92 gc.hasScissorArea = true; 93 gc.scissorArea = Rect(x, y, width, height); 94 m_geometryCalls.push(gc); 67 95 } 68 96 … … 96 124 void LibRocketRenderInterface::ReleaseTexture(Rocket::Core::TextureHandle texture_handle) { 97 125 98 ResourceHandle handle = static_cast<ResourceHandle>(texture_handle); 99 ImagePtr texture = m_imageManager->get(handle); 100 texture->free(); 126 ResourceHandle rh = static_cast<ResourceHandle>(texture_handle); 127 m_freedTextures.push_back(rh); 128 } 129 130 void LibRocketRenderInterface::freeTextures() { 131 std::list<ResourceHandle>::iterator it(m_freedTextures.begin()); 132 std::list<ResourceHandle>::iterator end(m_freedTextures.end()); 133 134 for(; it != end; ++it) { 135 ResourceHandle rh = (*it); 136 ImagePtr texture = m_imageManager->get(rh); 137 texture->free(); 138 } 139 140 m_freedTextures.clear(); 101 141 } 102 142 }; -
branches/active/gui_enhancements/engine/core/gui/librocket/librocketrenderinterface.h
r3996 r3997 24 24 25 25 // Standard C++ library includes 26 #include <list> 26 27 #include <queue> 27 28 #include <vector> … … 35 36 // Second block: files included from the same folder 36 37 #include "util/base/singleton.h" 38 #include "util/resource/resource.h" 37 39 38 40 namespace FIFE { … … 87 89 virtual void ReleaseTexture(Rocket::Core::TextureHandle texture_handle); 88 90 91 /** 92 * Frees all textures that are no longer needed by librocket. 93 */ 94 void freeTextures(); 95 89 96 private: 90 97 … … 105 112 class GeometryCall { 106 113 public: 114 115 GeometryCall() : hasScissorArea(false) { } 116 107 117 GeometryCallDataChain callChain; 108 118 Rect scissorArea; 119 bool hasScissorArea; 109 120 }; 110 121 111 122 std::queue<GeometryCall> m_geometryCalls; 123 124 std::list<ResourceHandle> m_freedTextures; 112 125 }; 113 126
Note: See TracChangeset
for help on using the changeset viewer.
