service/vi: Remove use of a module class

This didn't really provide much benefit here, especially since the
subsequent change requires that the behavior for each service's
GetDisplayService differs in a minor detail.

This also arguably makes the services nicer to read, since it gets rid
of an indirection in the class hierarchy.
This commit is contained in:
Lioncash
2019-02-26 17:20:02 -05:00
parent c07987dfab
commit 1b2872eebc
8 changed files with 99 additions and 46 deletions

View File

@ -4,13 +4,26 @@
#pragma once
#include "core/hle/service/service.h"
#include <memory>
#include "common/common_types.h"
namespace Kernel {
class HLERequestContext;
}
namespace Service::NVFlinger {
class NVFlinger;
}
namespace Service::SM {
class ServiceManager;
}
namespace Service::VI {
namespace detail {
void GetDisplayServiceImpl(Kernel::HLERequestContext& ctx,
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
}
enum class DisplayResolution : u32 {
DockedWidth = 1920,
@ -19,22 +32,6 @@ enum class DisplayResolution : u32 {
UndockedHeight = 720,
};
class Module final {
public:
class Interface : public ServiceFramework<Interface> {
public:
explicit Interface(std::shared_ptr<Module> module, const char* name,
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);
~Interface() override;
void GetDisplayService(Kernel::HLERequestContext& ctx);
protected:
std::shared_ptr<Module> module;
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger;
};
};
/// Registers all VI services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager,
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger);