summaryrefslogtreecommitdiffstats
path: root/chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h')
-rw-r--r--chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h55
1 files changed, 15 insertions, 40 deletions
diff --git a/chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h b/chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h
index 6753c139989..8b507b058fc 100644
--- a/chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h
+++ b/chromium/gpu/command_buffer/service/stream_texture_manager_in_process_android.h
@@ -7,66 +7,41 @@
#include <map>
-#include "base/memory/linked_ptr.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/synchronization/lock.h"
-#include "gpu/command_buffer/service/stream_texture.h"
-#include "gpu/command_buffer/service/stream_texture_manager.h"
+#include "base/threading/non_thread_safe.h"
namespace gfx {
-class Size;
class SurfaceTexture;
}
namespace gpu {
-class StreamTextureManagerInProcess
- : public gpu::StreamTextureManager,
- public base::RefCountedThreadSafe<StreamTextureManagerInProcess> {
+namespace gles2 {
+class TextureManager;
+}
+
+class StreamTextureManagerInProcess : public base::NonThreadSafe {
public:
StreamTextureManagerInProcess();
+ ~StreamTextureManagerInProcess();
- // implement gpu::StreamTextureManager:
- virtual uint32 CreateStreamTexture(uint32 service_id,
- uint32 client_id) OVERRIDE;
- virtual void DestroyStreamTexture(uint32 service_id) OVERRIDE;
- virtual gpu::StreamTexture* LookupStreamTexture(uint32 service_id) OVERRIDE;
+ uint32 CreateStreamTexture(uint32 client_texture_id,
+ gles2::TextureManager* texture_manager);
+ // This method can be called from any thread.
scoped_refptr<gfx::SurfaceTexture> GetSurfaceTexture(uint32 stream_id);
private:
- class StreamTextureImpl : public gpu::StreamTexture {
- public:
- StreamTextureImpl(uint32 service_id, uint32 stream_id);
- virtual ~StreamTextureImpl();
-
- // implement gpu::StreamTexture
- virtual void Update() OVERRIDE;
- virtual gfx::Size GetSize() OVERRIDE;
-
- void SetSize(gfx::Size size);
-
- scoped_refptr<gfx::SurfaceTexture> GetSurfaceTexture();
- uint32 stream_id() { return stream_id_; }
-
- private:
- scoped_refptr<gfx::SurfaceTexture> surface_texture_;
- uint32 stream_id_;
- gfx::Size size_;
+ void OnReleaseStreamTexture(uint32 stream_id);
- DISALLOW_COPY_AND_ASSIGN(StreamTextureImpl);
- };
-
- friend class base::RefCountedThreadSafe<StreamTextureManagerInProcess>;
- virtual ~StreamTextureManagerInProcess();
-
- typedef std::map<uint32, linked_ptr<StreamTextureImpl> > TextureMap;
+ typedef std::map<uint32, scoped_refptr<gfx::SurfaceTexture> > TextureMap;
TextureMap textures_;
-
- uint32 next_id_;
-
base::Lock map_lock_;
+ uint32 next_id_;
+ base::WeakPtrFactory<StreamTextureManagerInProcess> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(StreamTextureManagerInProcess);
};