Просмотр исходного кода

service/nvflinger: Make FindBufferQueueId() a const member function

This member function doesn't actually modify instance state, so it can
be const-qualified.
Lioncash 7 лет назад
Родитель
Сommit
ba14fb42e4

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

@@ -73,7 +73,7 @@ u64 NVFlinger::CreateLayer(u64 display_id) {
     return layer_id;
 }
 
-u32 NVFlinger::FindBufferQueueId(u64 display_id, u64 layer_id) {
+u32 NVFlinger::FindBufferQueueId(u64 display_id, u64 layer_id) const {
     const auto& layer = FindLayer(display_id, layer_id);
     return layer.buffer_queue->GetId();
 }
@@ -98,6 +98,14 @@ Display& NVFlinger::FindDisplay(u64 display_id) {
     return *itr;
 }
 
+const Display& NVFlinger::FindDisplay(u64 display_id) const {
+    const auto itr = std::find_if(displays.begin(), displays.end(),
+                                  [&](const Display& display) { return display.id == display_id; });
+
+    ASSERT(itr != displays.end());
+    return *itr;
+}
+
 Layer& NVFlinger::FindLayer(u64 display_id, u64 layer_id) {
     auto& display = FindDisplay(display_id);
 
@@ -108,6 +116,16 @@ Layer& NVFlinger::FindLayer(u64 display_id, u64 layer_id) {
     return *itr;
 }
 
+const Layer& NVFlinger::FindLayer(u64 display_id, u64 layer_id) const {
+    const auto& display = FindDisplay(display_id);
+
+    const auto itr = std::find_if(display.layers.begin(), display.layers.end(),
+                                  [&](const Layer& layer) { return layer.id == layer_id; });
+
+    ASSERT(itr != display.layers.end());
+    return *itr;
+}
+
 void NVFlinger::Compose() {
     for (auto& display : displays) {
         // Trigger vsync for this display at the end of drawing

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

@@ -64,7 +64,7 @@ public:
     u64 CreateLayer(u64 display_id);
 
     /// Finds the buffer queue ID of the specified layer in the specified display.
-    u32 FindBufferQueueId(u64 display_id, u64 layer_id);
+    u32 FindBufferQueueId(u64 display_id, u64 layer_id) const;
 
     /// Gets the vsync event for the specified display.
     Kernel::SharedPtr<Kernel::ReadableEvent> GetVsyncEvent(u64 display_id);
@@ -80,9 +80,15 @@ private:
     /// Finds the display identified by the specified ID.
     Display& FindDisplay(u64 display_id);
 
+    /// Finds the display identified by the specified ID.
+    const Display& FindDisplay(u64 display_id) const;
+
     /// Finds the layer identified by the specified ID in the desired display.
     Layer& FindLayer(u64 display_id, u64 layer_id);
 
+    /// Finds the layer identified by the specified ID in the desired display.
+    const Layer& FindLayer(u64 display_id, u64 layer_id) const;
+
     std::shared_ptr<Nvidia::Module> nvdrv;
 
     std::array<Display, 5> displays{{