Merge pull request #2281 from lioncash/applet
applet: minor interface changes
This commit is contained in:
		
						commit
						bc48e2bda6
					
				@ -101,6 +101,10 @@ ResultCode Applet::Start(const Service::APT::AppletStartupParameter& parameter)
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Applet::IsRunning() const {
 | 
			
		||||
    return is_running;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool IsLibraryAppletRunning() {
 | 
			
		||||
    // Check the applets map for instances of any applet
 | 
			
		||||
    for (auto itr = applets.begin(); itr != applets.end(); ++itr)
 | 
			
		||||
 | 
			
		||||
@ -13,8 +13,7 @@ namespace Applets {
 | 
			
		||||
 | 
			
		||||
class Applet {
 | 
			
		||||
public:
 | 
			
		||||
    virtual ~Applet() {}
 | 
			
		||||
    Applet(Service::APT::AppletId id) : id(id) {}
 | 
			
		||||
    virtual ~Applet() = default;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates an instance of the Applet subclass identified by the parameter.
 | 
			
		||||
@ -48,7 +47,7 @@ public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Whether the applet is currently executing instead of the host application or not.
 | 
			
		||||
     */
 | 
			
		||||
    virtual bool IsRunning() const = 0;
 | 
			
		||||
    bool IsRunning() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Handles an update tick for the Applet, lets it update the screen, send commands, etc.
 | 
			
		||||
@ -56,6 +55,8 @@ public:
 | 
			
		||||
    virtual void Update() = 0;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    explicit Applet(Service::APT::AppletId id) : id(id) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Handles the Applet start event, triggered from the application.
 | 
			
		||||
     * @param parameter Parameter data to handle.
 | 
			
		||||
@ -65,6 +66,9 @@ protected:
 | 
			
		||||
 | 
			
		||||
    Service::APT::AppletId id;                    ///< Id of this Applet
 | 
			
		||||
    std::shared_ptr<std::vector<u8>> heap_memory; ///< Heap memory for this Applet
 | 
			
		||||
 | 
			
		||||
    /// Whether this applet is currently running instead of the host application or not.
 | 
			
		||||
    bool is_running = false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/// Returns whether a library applet is currently running
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ ResultCode ErrEula::ReceiveParameter(const Service::APT::MessageParameter& param
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode ErrEula::StartImpl(const Service::APT::AppletStartupParameter& parameter) {
 | 
			
		||||
    started = true;
 | 
			
		||||
    is_running = true;
 | 
			
		||||
 | 
			
		||||
    // TODO(Subv): Set the expected fields in the response buffer before resending it to the
 | 
			
		||||
    // application.
 | 
			
		||||
@ -62,7 +62,7 @@ ResultCode ErrEula::StartImpl(const Service::APT::AppletStartupParameter& parame
 | 
			
		||||
    message.sender_id = static_cast<u32>(id);
 | 
			
		||||
    Service::APT::SendParameter(message);
 | 
			
		||||
 | 
			
		||||
    started = false;
 | 
			
		||||
    is_running = false;
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -17,18 +17,12 @@ public:
 | 
			
		||||
    ResultCode ReceiveParameter(const Service::APT::MessageParameter& parameter) override;
 | 
			
		||||
    ResultCode StartImpl(const Service::APT::AppletStartupParameter& parameter) override;
 | 
			
		||||
    void Update() override;
 | 
			
		||||
    bool IsRunning() const override {
 | 
			
		||||
        return started;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /// This SharedMemory will be created when we receive the LibAppJustStarted message.
 | 
			
		||||
    /// It holds the framebuffer info retrieved by the application with
 | 
			
		||||
    /// GSPGPU::ImportDisplayCaptureInfo
 | 
			
		||||
    Kernel::SharedPtr<Kernel::SharedMemory> framebuffer_memory;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /// Whether this applet is currently running instead of the host application or not.
 | 
			
		||||
    bool started = false;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Applets
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@ ResultCode MiiSelector::ReceiveParameter(const Service::APT::MessageParameter& p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode MiiSelector::StartImpl(const Service::APT::AppletStartupParameter& parameter) {
 | 
			
		||||
    started = true;
 | 
			
		||||
    is_running = true;
 | 
			
		||||
 | 
			
		||||
    // TODO(Subv): Set the expected fields in the response buffer before resending it to the
 | 
			
		||||
    // application.
 | 
			
		||||
@ -78,7 +78,7 @@ ResultCode MiiSelector::StartImpl(const Service::APT::AppletStartupParameter& pa
 | 
			
		||||
    message.sender_id = static_cast<u32>(id);
 | 
			
		||||
    Service::APT::SendParameter(message);
 | 
			
		||||
 | 
			
		||||
    started = false;
 | 
			
		||||
    is_running = false;
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -65,23 +65,18 @@ ASSERT_REG_POSITION(unk_6C, 0x6C);
 | 
			
		||||
 | 
			
		||||
class MiiSelector final : public Applet {
 | 
			
		||||
public:
 | 
			
		||||
    MiiSelector(Service::APT::AppletId id) : Applet(id), started(false) {}
 | 
			
		||||
    MiiSelector(Service::APT::AppletId id) : Applet(id) {}
 | 
			
		||||
 | 
			
		||||
    ResultCode ReceiveParameter(const Service::APT::MessageParameter& parameter) override;
 | 
			
		||||
    ResultCode StartImpl(const Service::APT::AppletStartupParameter& parameter) override;
 | 
			
		||||
    void Update() override;
 | 
			
		||||
    bool IsRunning() const override {
 | 
			
		||||
        return started;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /// This SharedMemory will be created when we receive the LibAppJustStarted message.
 | 
			
		||||
    /// It holds the framebuffer info retrieved by the application with
 | 
			
		||||
    /// GSPGPU::ImportDisplayCaptureInfo
 | 
			
		||||
    Kernel::SharedPtr<Kernel::SharedMemory> framebuffer_memory;
 | 
			
		||||
 | 
			
		||||
    /// Whether this applet is currently running instead of the host application or not.
 | 
			
		||||
    bool started;
 | 
			
		||||
 | 
			
		||||
    MiiConfig config;
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -70,7 +70,7 @@ ResultCode SoftwareKeyboard::StartImpl(Service::APT::AppletStartupParameter cons
 | 
			
		||||
 | 
			
		||||
    DrawScreenKeyboard();
 | 
			
		||||
 | 
			
		||||
    started = true;
 | 
			
		||||
    is_running = true;
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -113,7 +113,7 @@ void SoftwareKeyboard::Finalize() {
 | 
			
		||||
    message.sender_id = static_cast<u32>(id);
 | 
			
		||||
    Service::APT::SendParameter(message);
 | 
			
		||||
 | 
			
		||||
    started = false;
 | 
			
		||||
    is_running = false;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
} // namespace
 | 
			
		||||
 | 
			
		||||
@ -52,14 +52,11 @@ static_assert(sizeof(SoftwareKeyboardConfig) == 0x400, "Software Keyboard Config
 | 
			
		||||
 | 
			
		||||
class SoftwareKeyboard final : public Applet {
 | 
			
		||||
public:
 | 
			
		||||
    SoftwareKeyboard(Service::APT::AppletId id) : Applet(id), started(false) {}
 | 
			
		||||
    SoftwareKeyboard(Service::APT::AppletId id) : Applet(id) {}
 | 
			
		||||
 | 
			
		||||
    ResultCode ReceiveParameter(const Service::APT::MessageParameter& parameter) override;
 | 
			
		||||
    ResultCode StartImpl(const Service::APT::AppletStartupParameter& parameter) override;
 | 
			
		||||
    void Update() override;
 | 
			
		||||
    bool IsRunning() const override {
 | 
			
		||||
        return started;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Draws a keyboard to the current bottom screen framebuffer.
 | 
			
		||||
@ -72,6 +69,7 @@ public:
 | 
			
		||||
     */
 | 
			
		||||
    void Finalize();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /// This SharedMemory will be created when we receive the LibAppJustStarted message.
 | 
			
		||||
    /// It holds the framebuffer info retrieved by the application with
 | 
			
		||||
    /// GSPGPU::ImportDisplayCaptureInfo
 | 
			
		||||
@ -82,9 +80,6 @@ public:
 | 
			
		||||
 | 
			
		||||
    /// Configuration of this instance of the SoftwareKeyboard, as received from the application
 | 
			
		||||
    SoftwareKeyboardConfig config;
 | 
			
		||||
 | 
			
		||||
    /// Whether this applet is currently running instead of the host application or not.
 | 
			
		||||
    bool started;
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
} // namespace
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user