diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2022-10-25 12:45:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 12:45:51 +0200 |
commit | 3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986 (patch) | |
tree | 94deaac51d8ca9abd7c9b3f4bce3a420c6ab8ac8 /src/core/hle/service | |
parent | Merge pull request #8873 from vonchenplus/fix_legacy_location_error (diff) | |
parent | core: barrier service thread shutdown (diff) | |
download | yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar.gz yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar.bz2 yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar.lz yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar.xz yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.tar.zst yuzu-3c38bd7cf0dbe73f72c008cb6fc0df38b50dc986.zip |
Diffstat (limited to 'src/core/hle/service')
-rw-r--r-- | src/core/hle/service/nvflinger/nvflinger.cpp | 12 | ||||
-rw-r--r-- | src/core/hle/service/nvflinger/nvflinger.h | 2 | ||||
-rw-r--r-- | src/core/hle/service/service.cpp | 4 | ||||
-rw-r--r-- | src/core/hle/service/service.h | 2 |
4 files changed, 16 insertions, 4 deletions
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp index aa14d2cbc..dad93b38e 100644 --- a/src/core/hle/service/nvflinger/nvflinger.cpp +++ b/src/core/hle/service/nvflinger/nvflinger.cpp @@ -102,15 +102,19 @@ NVFlinger::~NVFlinger() { system.CoreTiming().UnscheduleEvent(single_composition_event, {}); } + ShutdownLayers(); + + if (nvdrv) { + nvdrv->Close(disp_fd); + } +} + +void NVFlinger::ShutdownLayers() { for (auto& display : displays) { for (size_t layer = 0; layer < display.GetNumLayers(); ++layer) { display.GetLayer(layer).Core().NotifyShutdown(); } } - - if (nvdrv) { - nvdrv->Close(disp_fd); - } } void NVFlinger::SetNVDrvInstance(std::shared_ptr<Nvidia::Module> instance) { diff --git a/src/core/hle/service/nvflinger/nvflinger.h b/src/core/hle/service/nvflinger/nvflinger.h index 99509bc5b..b8191c595 100644 --- a/src/core/hle/service/nvflinger/nvflinger.h +++ b/src/core/hle/service/nvflinger/nvflinger.h @@ -48,6 +48,8 @@ public: explicit NVFlinger(Core::System& system_, HosBinderDriverServer& hos_binder_driver_server_); ~NVFlinger(); + void ShutdownLayers(); + /// Sets the NVDrv module instance to use to send buffers to the GPU. void SetNVDrvInstance(std::shared_ptr<Nvidia::Module> instance); diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index dadaf897f..5db6588e4 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -303,4 +303,8 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system Services::~Services() = default; +void Services::KillNVNFlinger() { + nv_flinger->ShutdownLayers(); +} + } // namespace Service diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 5bf197c51..ec9deeee4 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h @@ -238,6 +238,8 @@ public: explicit Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system); ~Services(); + void KillNVNFlinger(); + private: std::unique_ptr<NVFlinger::HosBinderDriverServer> hos_binder_driver_server; std::unique_ptr<NVFlinger::NVFlinger> nv_flinger; |