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/SDLHeadlessHost.h
Views: 1401
1
// Copyright (c) 2017- 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
#ifdef SDL
21
22
#include "headless/HeadlessHost.h"
23
24
#undef HEADLESSHOST_CLASS
25
#define HEADLESSHOST_CLASS SDLHeadlessHost
26
27
struct SDL_Window;
28
typedef void *SDL_GLContext;
29
30
class SDLHeadlessHost : public HeadlessHost
31
{
32
public:
33
bool InitGraphics(std::string *error_message, GraphicsContext **ctx, GPUCore core) override;
34
void ShutdownGraphics() override;
35
36
void SwapBuffers() 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
volatile RenderThreadState threadState_ = RenderThreadState::IDLE;
51
};
52
53
#endif
54
55