 Chromium Code Reviews
 Chromium Code Reviews Issue 2455983005:
  Refactor AcceleratedStaticBitmapImage  (Closed)
    
  
    Issue 2455983005:
  Refactor AcceleratedStaticBitmapImage  (Closed) 
  | OLD | NEW | 
|---|---|
| (Empty) | |
| 1 // Copyright 2016 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 TextureHolder_h | |
| 6 #define TextureHolder_h | |
| 7 | |
| 8 #include "gpu/command_buffer/common/mailbox.h" | |
| 9 #include "gpu/command_buffer/common/sync_token.h" | |
| 10 #include "platform/PlatformExport.h" | |
| 11 #include "platform/WebTaskRunner.h" | |
| 12 #include "platform/geometry/IntSize.h" | |
| 13 #include "platform/graphics/Image.h" | |
| 14 #include "third_party/skia/include/core/SkImage.h" | |
| 15 #include "third_party/skia/include/core/SkRefCnt.h" | |
| 16 | |
| 17 namespace blink { | |
| 18 | |
| 19 class WebThread; | |
| 20 | |
| 21 class PLATFORM_EXPORT TextureHolder { | |
| 22 public: | |
| 23 virtual ~TextureHolder() {} | |
| 24 | |
| 25 // Methods overrided by all sub-classes | |
| 26 virtual bool isSkiaTextureHolder() = 0; | |
| 27 virtual bool isMailboxTextureHolder() = 0; | |
| 28 virtual unsigned sharedContextId() = 0; | |
| 29 virtual IntSize size() const = 0; | |
| 30 virtual bool currentFrameKnownToBeOpaque(Image::MetadataMode) = 0; | |
| 31 | |
| 32 // Methods overrided by MailboxTextureHolder | |
| 33 virtual gpu::Mailbox mailbox() { | |
| 34 NOTREACHED(); | |
| 35 return gpu::Mailbox(); | |
| 36 } | |
| 37 virtual gpu::SyncToken syncToken() { | |
| 38 NOTREACHED(); | |
| 39 return gpu::SyncToken(); | |
| 40 } | |
| 41 virtual void updateSyncToken(gpu::SyncToken) { NOTREACHED(); } | |
| 42 | |
| 43 // Methods overrided by SkiaTextureHolder | |
| 44 virtual sk_sp<SkImage> skImage() { | |
| 45 NOTREACHED(); | |
| 46 return nullptr; | |
| 47 } | |
| 48 virtual void setSharedContextId(unsigned) { NOTREACHED(); } | |
| 49 virtual void setImageThread(WebThread*) { NOTREACHED(); } | |
| 50 virtual void setImageThreadTaskRunner(std::unique_ptr<WebTaskRunner>) { | |
| 51 NOTREACHED(); | |
| 52 } | |
| 53 | |
| 54 // Methods that have exactly the same impelmentation for all sub-classes | |
| 55 WebThread* textureThread() { return m_textureThreadDoNotCall; } | |
| 
Justin Novosad
2016/11/08 19:38:54
This is never called, but it should be. make the d
 
xidachen
2016/11/08 20:30:58
Done.
 | |
| 56 void setTextureThread(WebThread* thread) { | |
| 57 m_textureThreadDoNotCall = thread; | |
| 
Justin Novosad
2016/11/08 19:38:54
The only thing we ever do with this value, as far
 
xidachen
2016/11/08 20:30:58
Done.
 | |
| 58 } | |
| 59 void setTextureThreadTaskRunner(std::unique_ptr<WebTaskRunner> taskRunner) { | |
| 60 m_textureThreadTaskRunner = std::move(taskRunner); | |
| 61 } | |
| 62 | |
| 63 protected: | |
| 64 // Thread that |m_texture| in the AcceleratedStaticBitmapImage belongs to. Set | |
| 65 // to null when |m_texture| belongs to the same thread as the | |
| 66 // AcceleratedStaticBitmapImage. Should only be non-null after a transfer. | |
| 67 // VERY IMPORTANT: Used for pointer comparisons only. DO NOT call any of its | |
| 68 // API because that would potentially CRASH. | |
| 69 WebThread* m_textureThreadDoNotCall = nullptr; | |
| 70 // Keep a clone of the WebTaskRunner for m_textureThread. This is to handle | |
| 71 // the case where |m_textureThread| goes out of scope, and we still need to | |
| 72 // use | |
| 73 // the WebTaskRunner for the |m_textureThread|. | |
| 74 std::unique_ptr<WebTaskRunner> m_textureThreadTaskRunner; | |
| 75 }; | |
| 76 | |
| 77 } // namespace blink | |
| 78 | |
| 79 #endif // TextureHolder_h | |
| OLD | NEW |