CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/headless/WindowsHeadlessHost.h
Views: 1401
1
// Copyright (c) 2012- PPSSPP Project.
2
3
// This program is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, version 2.0 or later versions.
6
7
// This program is distributed in the hope that it will be useful,
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
// GNU General Public License 2.0 for more details.
11
12
// A copy of the GPL 2.0 should have been included with the program.
13
// If not, see http://www.gnu.org/licenses/
14
15
// Official git repository and contact information can be found at
16
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
17
18
#pragma once
19
20
#include "headless/HeadlessHost.h"
21
#include <thread>
22
23
#undef HEADLESSHOST_CLASS
24
#define HEADLESSHOST_CLASS WindowsHeadlessHost
25
26
#include "Common/CommonWindows.h"
27
28
class WindowsHeadlessHost : public HeadlessHost
29
{
30
public:
31
bool InitGraphics(std::string *error_message, GraphicsContext **ctx, GPUCore core) override;
32
void ShutdownGraphics() override;
33
34
void SwapBuffers() override;
35
36
void SendDebugOutput(const std::string &output) override;
37
38
protected:
39
enum class RenderThreadState {
40
IDLE,
41
START_REQUESTED,
42
STARTING,
43
START_FAILED,
44
STARTED,
45
STOP_REQUESTED,
46
STOPPING,
47
STOPPED,
48
};
49
50
HWND hWnd;
51
HDC hDC;
52
HGLRC hRC;
53
volatile RenderThreadState threadState_ = RenderThreadState::IDLE;
54
};
55
56