فهرست منبع

nvflinger: Use return value of Lock()

comex reported in #4424 that we were incorrectly discarding the return
value of Lock() which is correct.
Lioncash 6 سال پیش
والد
کامیت
5dab23e017
3فایلهای تغییر یافته به همراه4 افزوده شده و 4 حذف شده
  1. 1 1
      src/core/hle/service/nvflinger/nvflinger.cpp
  2. 1 1
      src/core/hle/service/nvflinger/nvflinger.h
  3. 2 2
      src/core/hle/service/vi/vi.cpp

+ 1 - 1
src/core/hle/service/nvflinger/nvflinger.cpp

@@ -68,7 +68,7 @@ NVFlinger::NVFlinger(Core::System& system) : system(system) {
     // Schedule the screen composition events
     composition_event = Core::Timing::CreateEvent(
         "ScreenComposition", [this](u64, std::chrono::nanoseconds ns_late) {
-            Lock();
+            const auto guard = Lock();
             Compose();
 
             const auto ticks = std::chrono::nanoseconds{GetNextTicks()};

+ 1 - 1
src/core/hle/service/nvflinger/nvflinger.h

@@ -86,7 +86,7 @@ public:
 
     s64 GetNextTicks() const;
 
-    std::unique_lock<std::mutex> Lock() {
+    std::unique_lock<std::mutex> Lock() const {
         return std::unique_lock{*guard};
     }
 

+ 2 - 2
src/core/hle/service/vi/vi.cpp

@@ -511,7 +511,7 @@ private:
         LOG_DEBUG(Service_VI, "called. id=0x{:08X} transaction={:X}, flags=0x{:08X}", id,
                   static_cast<u32>(transaction), flags);
 
-        nv_flinger->Lock();
+        const auto guard = nv_flinger->Lock();
         auto& buffer_queue = nv_flinger->FindBufferQueue(id);
 
         switch (transaction) {
@@ -551,7 +551,7 @@ private:
                     [=](std::shared_ptr<Kernel::Thread> thread, Kernel::HLERequestContext& ctx,
                         Kernel::ThreadWakeupReason reason) {
                         // Repeat TransactParcel DequeueBuffer when a buffer is available
-                        nv_flinger->Lock();
+                        const auto guard = nv_flinger->Lock();
                         auto& buffer_queue = nv_flinger->FindBufferQueue(id);
                         auto result = buffer_queue.DequeueBuffer(width, height);
                         ASSERT_MSG(result != std::nullopt, "Could not dequeue buffer.");