Make GrClientMappedBufferManager use GrDirectContextID for messages

Change-Id: Iace947384fbe426915e7a9d426dc7ac60fb3883b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/383700
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrClientMappedBufferManager.h b/src/gpu/GrClientMappedBufferManager.h
index 9ba0954..a77e598 100644
--- a/src/gpu/GrClientMappedBufferManager.h
+++ b/src/gpu/GrClientMappedBufferManager.h
@@ -8,6 +8,7 @@
 #ifndef GrClientMappedBufferManager_DEFINED
 #define GrClientMappedBufferManager_DEFINED
 
+#include "include/gpu/GrDirectContext.h"
 #include "include/private/SkTArray.h"
 #include "src/core/SkMessageBus.h"
 #include "src/gpu/GrGpuBuffer.h"
@@ -16,11 +17,11 @@
 /**
  * We sometimes hand clients objects that contain mapped GrGpuBuffers. The client may consume
  * the mapped buffer on another thread. This object manages receiving messages that buffers are
- * ready to be unmapped (on the direct GrContext's thread). It also handles cleaning up mapped
- * buffers if the GrContext is destroyed before the client has finished with the buffer.
+ * ready to be unmapped (on the GrDirectContext's thread). It also handles cleaning up mapped
+ * buffers if the GrDirectContext is destroyed before the client has finished with the buffer.
  *
  * Buffers are first registered using insert() before being passed the client. process() should be
- * called periodically on the direct GrContext thread to poll for messages and process them.
+ * called periodically on the GrDirectContext thread to poll for messages and process them.
  */
 class GrClientMappedBufferManager final {
 public:
@@ -29,19 +30,22 @@
      * Set fInboxID to inboxID(). fBuffer must have been previously passed to insert().
      */
     struct BufferFinishedMessage {
-        BufferFinishedMessage(sk_sp<GrGpuBuffer> buffer, uint32_t indexId)
-                : fBuffer(std::move(buffer)), fInboxID(indexId) {}
+        BufferFinishedMessage(sk_sp<GrGpuBuffer> buffer,
+                              GrDirectContext::DirectContextID intendedRecipient)
+                : fBuffer(std::move(buffer)), fIntendedRecipient(intendedRecipient) {}
         BufferFinishedMessage(BufferFinishedMessage&& other) {
             fBuffer = std::move(other.fBuffer);
-            fInboxID = other.fInboxID;
-            other.fInboxID = 0;
+            fIntendedRecipient = other.fIntendedRecipient;
+            other.fIntendedRecipient.makeInvalid();
         }
-        sk_sp<GrGpuBuffer> fBuffer;
-        uint32_t fInboxID;
+        sk_sp<GrGpuBuffer>               fBuffer;
+        GrDirectContext::DirectContextID fIntendedRecipient;
     };
-    using BufferFinishedMessageBus = SkMessageBus<BufferFinishedMessage, uint32_t, false>;
+    using BufferFinishedMessageBus = SkMessageBus<BufferFinishedMessage,
+                                                  GrDirectContext::DirectContextID,
+                                                  false>;
 
-    GrClientMappedBufferManager(uint32_t contextID);
+    GrClientMappedBufferManager(GrDirectContext::DirectContextID owningDirectContext);
     GrClientMappedBufferManager(const GrClientMappedBufferManager&) = delete;
     GrClientMappedBufferManager(GrClientMappedBufferManager&&) = delete;
 
@@ -50,8 +54,12 @@
     GrClientMappedBufferManager& operator=(const GrClientMappedBufferManager&) = delete;
     GrClientMappedBufferManager& operator=(GrClientMappedBufferManager&&) = delete;
 
-    /** Initialize BufferFinishedMessage::fInboxID to this value. */
-    uint32_t inboxID() const { return fFinishedBufferInbox.uniqueID(); }
+    /** Initialize BufferFinishedMessage::fIntendedRecipient to this value. It is the
+     *  unique ID of the GrDirectContext that owns this buffer manager.
+     */
+    GrDirectContext::DirectContextID owningDirectContext() const {
+        return fFinishedBufferInbox.uniqueID();
+    }
 
     /**
      * Let the manager know to expect a message with buffer 'b'. It's illegal for a buffer to be
@@ -74,6 +82,6 @@
 };
 
 bool SkShouldPostMessageToBus(const GrClientMappedBufferManager::BufferFinishedMessage&,
-                              uint32_t msgBusUniqueID);
+                              GrDirectContext::DirectContextID potentialRecipient);
 
 #endif