1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef GPU_STREAM_TEXTURE_MANAGER_IN_PROCESS_ANDROID_H_ 6 #define GPU_STREAM_TEXTURE_MANAGER_IN_PROCESS_ANDROID_H_ 7 8 #include <map> 9 10 #include "base/memory/ref_counted.h" 11 #include "base/memory/weak_ptr.h" 12 #include "base/synchronization/lock.h" 13 #include "base/threading/non_thread_safe.h" 14 15 namespace gfx { 16 class SurfaceTexture; 17 } 18 19 namespace gpu { 20 21 namespace gles2 { 22 class TextureManager; 23 } 24 25 class StreamTextureManagerInProcess : public base::NonThreadSafe { 26 public: 27 StreamTextureManagerInProcess(); 28 ~StreamTextureManagerInProcess(); 29 30 uint32 CreateStreamTexture(uint32 client_texture_id, 31 gles2::TextureManager* texture_manager); 32 33 // This method can be called from any thread. 34 scoped_refptr<gfx::SurfaceTexture> GetSurfaceTexture(uint32 stream_id); 35 36 private: 37 void OnReleaseStreamTexture(uint32 stream_id); 38 39 typedef std::map<uint32, scoped_refptr<gfx::SurfaceTexture> > TextureMap; 40 TextureMap textures_; 41 base::Lock map_lock_; 42 uint32 next_id_; 43 44 base::WeakPtrFactory<StreamTextureManagerInProcess> weak_factory_; 45 DISALLOW_COPY_AND_ASSIGN(StreamTextureManagerInProcess); 46 }; 47 48 } // gpu 49 50 #endif // GPU_STREAM_TEXTURE_MANAGER_IN_PROCESS_ANDROID_H_ 51