• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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