ppsspp/Core/HLE/HLEHelperThread.h
Unknown W. Brackets 593e48b865 Io: Update async priority more correctly.
When an operation finishes, whether it uses the priority from the first
operation or the current thread's priority depends on sdk version, it
seems.

This also makes it resolve the default priority on open, so that changing
the default afterward doesn't affect already open descriptors.
2020-01-03 14:24:52 -08:00

53 lines
1.5 KiB
C++

// Copyright (c) 2014- PPSSPP Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0 or later versions.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#pragma once
#include "Core/HLE/sceKernel.h"
class PointerWrap;
enum WaitType : int;
class HLEHelperThread {
public:
// For savestates.
HLEHelperThread();
HLEHelperThread(const char *threadName, u32 instructions[], u32 instrCount, u32 prio, int stacksize);
HLEHelperThread(const char *threadName, const char *module, const char *func, u32 prio, int stacksize);
~HLEHelperThread();
void DoState(PointerWrap &p);
void Start(u32 a0, u32 a1);
void Terminate();
bool Stopped();
void ChangePriority(u32 prio);
void Resume(WaitType waitType, SceUID uid, int result);
// For savestates.
void Forget();
u32 Entry() {
return entry_;
}
private:
void AllocEntry(u32 size);
void Create(const char *threadName, u32 prio, int stacksize);
SceUID id_;
u32 entry_;
};