summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/vi
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2024-01-07 03:21:01 +0100
committerLiam <byteslice@airmail.cc>2024-01-30 02:17:33 +0100
commit68303ed6016da0926df8b62e5a0c55c9b914f927 (patch)
tree35c805cffc86c668ae88641bd42358105ed6751a /src/core/hle/service/vi
parentam: return AppletDataBroker and use for frontend applets (diff)
downloadyuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.gz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.bz2
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.lz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.xz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.zst
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.zip
Diffstat (limited to 'src/core/hle/service/vi')
-rw-r--r--src/core/hle/service/vi/display/vi_display.cpp4
-rw-r--r--src/core/hle/service/vi/layer/vi_layer.cpp2
-rw-r--r--src/core/hle/service/vi/layer/vi_layer.h9
3 files changed, 12 insertions, 3 deletions
diff --git a/src/core/hle/service/vi/display/vi_display.cpp b/src/core/hle/service/vi/display/vi_display.cpp
index 725311c53..dab1905cc 100644
--- a/src/core/hle/service/vi/display/vi_display.cpp
+++ b/src/core/hle/service/vi/display/vi_display.cpp
@@ -53,7 +53,7 @@ Display::~Display() {
Layer& Display::GetLayer(std::size_t index) {
size_t i = 0;
for (auto& layer : layers) {
- if (!layer->IsOpen()) {
+ if (!layer->IsOpen() || !layer->IsVisible()) {
continue;
}
@@ -68,7 +68,7 @@ Layer& Display::GetLayer(std::size_t index) {
}
size_t Display::GetNumLayers() const {
- return std::ranges::count_if(layers, [](auto& l) { return l->IsOpen(); });
+ return std::ranges::count_if(layers, [](auto& l) { return l->IsOpen() && l->IsVisible(); });
}
Kernel::KReadableEvent* Display::GetVSyncEvent() {
diff --git a/src/core/hle/service/vi/layer/vi_layer.cpp b/src/core/hle/service/vi/layer/vi_layer.cpp
index 04e52a23b..493bd6e9e 100644
--- a/src/core/hle/service/vi/layer/vi_layer.cpp
+++ b/src/core/hle/service/vi/layer/vi_layer.cpp
@@ -9,7 +9,7 @@ Layer::Layer(u64 layer_id_, u32 binder_id_, android::BufferQueueCore& core_,
android::BufferQueueProducer& binder_,
std::shared_ptr<android::BufferItemConsumer>&& consumer_)
: layer_id{layer_id_}, binder_id{binder_id_}, core{core_}, binder{binder_},
- consumer{std::move(consumer_)}, open{false} {}
+ consumer{std::move(consumer_)}, open{false}, visible{true} {}
Layer::~Layer() = default;
diff --git a/src/core/hle/service/vi/layer/vi_layer.h b/src/core/hle/service/vi/layer/vi_layer.h
index f95e2dc71..b4b031ee7 100644
--- a/src/core/hle/service/vi/layer/vi_layer.h
+++ b/src/core/hle/service/vi/layer/vi_layer.h
@@ -72,6 +72,14 @@ public:
return core;
}
+ bool IsVisible() const {
+ return visible;
+ }
+
+ void SetVisibility(bool v) {
+ visible = v;
+ }
+
bool IsOpen() const {
return open;
}
@@ -91,6 +99,7 @@ private:
android::BufferQueueProducer& binder;
std::shared_ptr<android::BufferItemConsumer> consumer;
bool open;
+ bool visible;
};
} // namespace Service::VI