Code Clean Up

Round one of clean up
This commit is contained in:
NPO 2024-10-23 12:44:21 -04:00
parent f16fe763a3
commit db78366131
8 changed files with 61 additions and 68 deletions

View File

@ -206,7 +206,6 @@ private:
static void audioCallback(void* data, Uint8* stream, int len);
static void micCallback(void* data, Uint8* stream, int len);
void onKeyPress(QKeyEvent* event);
void onKeyRelease(QKeyEvent* event);
void keyReleaseAll();

View File

@ -71,9 +71,8 @@ void EmuInstance::inputInit()
hotkeyMask = 0;
lastHotkeyMask = 0;
for (int i=0;i<256;i++){
for (int i=0;i<256;i++)
KeyboardMask[i]=false;
}
joystick = nullptr;
controller = nullptr;
@ -224,7 +223,7 @@ void EmuInstance::onKeyPress(QKeyEvent* event)
{
if (event->key()<256)
KeyboardMask[event->key()]=true;
if ((event->key()&0x01000000)>0 && (event->key()&0xff)<0x41) //special keys (there is probably a less messy way to write this...)
if ((event->key()&(1<<24))!=0 && (event->key()&0xff)<'A') //Special Keys
KeyboardMask[0xff - (event->key()&0xff)]=true;
int keyHK = getEventKeyVal(event);
@ -246,7 +245,7 @@ void EmuInstance::onKeyRelease(QKeyEvent* event)
{
if (event->key()<256)
KeyboardMask[event->key()]=false;
if ((event->key()&0x01000000)>0 && (event->key()&0xff)<0x41)//special keys
if ((event->key()&(1<<24))!=0 && (event->key()&0xff)<'A')//Special keys
KeyboardMask[0xff - (event->key()&0xff)]=false;
int keyHK = getEventKeyVal(event);

View File

@ -442,10 +442,9 @@ void EmuThread::run()
handleMessages();
LuaConsoleDialog* dialog = emuInstance->getMainWindow()->getLuaDialog();
//Lua Script Stuff (-for now happens at the end of each frame regardless of emuStatus)
if(dialog!=nullptr)
if (dialog!=nullptr)
{
LuaBundle* lua = dialog->getLuaBundle();
lua->createLuaState();//Create LuaState if needed

View File

@ -46,9 +46,9 @@ public slots:
//Based on ScreenLayout::GetScreenTransforms
enum LuaCanvasTarget
{
TopScreen = 0,
BottomScreen = 1,
OSD = 2 //Used for drawing to OSD / non-screen target
canvasTarget_TopScreen = 0,
canvasTarget_BottomScreen = 1,
canvasTarget_OSD = 2 //Used for drawing to OSD / non-screen target
};
struct OverlayCanvas
@ -58,11 +58,11 @@ struct OverlayCanvas
QImage* buffer1;
QImage* buffer2;
QRect rectangle;
LuaCanvasTarget target = OSD;
LuaCanvasTarget target = canvasTarget_OSD;
bool isActive = true; // only active overlays are drawn
unsigned int GLTexture; // used by GL rendering
bool GLTextureLoaded;
OverlayCanvas(int x, int y,int w, int h, LuaCanvasTarget target = LuaCanvasTarget::OSD);
OverlayCanvas(int x, int y,int w, int h, LuaCanvasTarget target = LuaCanvasTarget::canvasTarget_OSD);
void flip();//used to swap buffers / update canvas
bool flipped; //used to signal update to graphics.
};

View File

@ -66,42 +66,44 @@ void main()
//Fragment Shader for overlay copied from melonPrimeDS project.
const char* kScreenFS_overlay = R"(#version 140
uniform sampler2D OverlayTex;
uniform sampler2D OverlayTex;
smooth in vec2 fTexcoord;
smooth in vec2 fTexcoord;
uniform vec2 uOverlayPos;
uniform vec2 uOverlaySize;
uniform int uOverlayScreenType;
uniform vec2 uOverlayPos;
uniform vec2 uOverlaySize;
uniform int uOverlayScreenType;
out vec4 oColor;
out vec4 oColor;
void main()
void main()
{
const vec2 dsSize = vec2(256.0, 193.0); // +1 on y for pixel gap
vec2 uv = fTexcoord * vec2(1.0, 2.0);
if (uOverlayScreenType < 1)
{
const vec2 dsSize = vec2(256.0, 193.0); // +1 on y for pixel gap
vec2 uv = fTexcoord * vec2(1.0, 2.0);
if (uOverlayScreenType < 1) {
// top screen
uv -= uOverlayPos / dsSize;
uv *= dsSize / uOverlaySize;
} else {
// bottom screen
uv -= vec2(0.0, 1.0);
uv -= (uOverlayPos + vec2(0.0, 1.0)) / dsSize;
uv *= dsSize / uOverlaySize;
}
vec4 pixel = texture(OverlayTex, uv);
pixel.rgb *= pixel.a;
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
oColor = vec4(0.0, 0.0, 0.0, 0.0);
} else {
oColor = pixel.bgra;
}
// top screen
uv -= uOverlayPos / dsSize;
uv *= dsSize / uOverlaySize;
} else {
// bottom screen
uv -= vec2(0.0, 1.0);
uv -= (uOverlayPos + vec2(0.0, 1.0)) / dsSize;
uv *= dsSize / uOverlaySize;
}
vec4 pixel = texture(OverlayTex, uv);
pixel.rgb *= pixel.a;
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)
{
oColor = vec4(0.0, 0.0, 0.0, 0.0);
} else {
oColor = pixel.bgra;
}
}
)";

View File

@ -48,7 +48,6 @@
#include "font.h"
#include "LuaMain.h"
using namespace melonDS;
@ -679,6 +678,7 @@ void ScreenPanelNative::drawOverlays(QPainter* painter,int type)
if (!dialog)
return;
LuaBundle* lua = dialog->getLuaBundle();
for (auto lo = lua->overlays->begin(); lo != lua->overlays->end();)
{
OverlayCanvas& overlay = *lo;
@ -736,7 +736,7 @@ void ScreenPanelNative::paintEvent(QPaintEvent* event)
painter.resetTransform();
drawOverlays(&painter,LuaCanvasTarget::OSD);
drawOverlays(&painter,canvasTarget_OSD);
for (auto it = osdItems.begin(); it != osdItems.end(); )
{
@ -904,7 +904,7 @@ void ScreenPanelGL::initOpenGL()
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, (void*)(0));
transferLayout();
//TODO: Lookinto seeing if we can just re-use screen shader for this...
OpenGL::CompileVertexFragmentProgram(overlayShader,
kScreenVS,kScreenFS_overlay,
"OverlayShader",
@ -915,7 +915,6 @@ void ScreenPanelGL::initOpenGL()
overlayScreenSizeULoc = glGetUniformLocation(overlayShader, "uScreenSize");
overlayTransformULoc = glGetUniformLocation(overlayShader, "uTransform");
overlayPosULoc = glGetUniformLocation(overlayShader, "uOverlayPos");
overlaySizeULoc = glGetUniformLocation(overlayShader, "uOverlaySize");
overlayScreenTypeULoc = glGetUniformLocation(overlayShader, "uOverlayScreenType");
@ -946,20 +945,19 @@ void ScreenPanelGL::deinitOpenGL()
glDeleteProgram(overlayShader);
//Double Check that this actually works lol...
std::vector<OverlayCanvas>* overlays=nullptr;
if (mainWindow->getLuaDialog())
overlays = mainWindow->getLuaDialog()->getLuaBundle()->overlays;
for (auto lo = overlays->begin(); lo != overlays->end();)
{
OverlayCanvas& overlay = *lo;
lo++;
if (!overlay.GLTextureLoaded)
continue;
glDeleteTextures(1,&overlay.GLTexture);
overlay.GLTextureLoaded=false;
std::vector<OverlayCanvas>* overlays = mainWindow->getLuaDialog()->getLuaBundle()->overlays;
for (auto lo = overlays->begin(); lo != overlays->end();)
{
OverlayCanvas& overlay = *lo;
lo++;
if (!overlay.GLTextureLoaded)
continue;
glDeleteTextures(1,&overlay.GLTexture);
overlay.GLTextureLoaded=false;
}
}
glContext->DoneCurrent();
lastScreenWidth = lastScreenHeight = -1;
@ -1002,12 +1000,11 @@ void ScreenPanelGL::osdDeleteItem(OSDItem* item)
void ScreenPanelGL::drawOverlays(int type,int screen)
{
LuaConsoleDialog* dialog = mainWindow->getLuaDialog();
if (!dialog)
if (!mainWindow->getLuaDialog())
return;
LuaBundle* lua = dialog->getLuaBundle();
for (auto lo = lua->overlays->begin(); lo != lua->overlays->end();)
std::vector<OverlayCanvas>* overlays = mainWindow->getLuaDialog()->getLuaBundle()->overlays;
for (auto lo = overlays->begin(); lo != overlays->end();)
{
OverlayCanvas& overlay = *lo;
lo++;
@ -1030,7 +1027,7 @@ void ScreenPanelGL::drawOverlays(int type,int screen)
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,overlay.rectangle.width(),overlay.rectangle.height(),GL_RGBA,GL_UNSIGNED_BYTE,overlay.displayBuffer->bits());
overlay.flipped = false;
}
if(type == LuaCanvasTarget::OSD) // OSD gets drawn differently then top or bottom screen target
if(type == canvasTarget_OSD) // OSD gets drawn differently then top or bottom screen target
{
glBindTexture(GL_TEXTURE_2D, overlay.GLTexture);
glUniform2i(osdPosULoc,overlay.rectangle.left(),overlay.rectangle.top());
@ -1049,7 +1046,6 @@ void ScreenPanelGL::drawOverlays(int type,int screen)
}
}
void ScreenPanelGL::drawScreenGL()
{
if (!glContext) return;
@ -1162,7 +1158,7 @@ void ScreenPanelGL::drawScreenGL()
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
drawOverlays(LuaCanvasTarget::OSD,0);
drawOverlays(canvasTarget_OSD,0);
for (auto it = osdItems.begin(); it != osdItems.end(); )
{

View File

@ -224,7 +224,6 @@ private:
GLuint overlayShader;
GLuint overlayScreenSizeULoc, overlayTransformULoc;
GLuint overlayPosULoc, overlaySizeULoc, overlayScreenTypeULoc;
};
#endif // SCREEN_H

View File

@ -410,7 +410,6 @@ MainWindow::MainWindow(int id, EmuInstance* inst, QWidget* parent) :
actLuaScript = menu->addAction("Lua Script");
connect(actLuaScript,&QAction::triggered,this,&MainWindow::onOpenLuaScript);
menu->addSeparator();
actEnableCheats = menu->addAction("Enable cheats");
@ -1681,7 +1680,7 @@ void MainWindow::onOpenPowerManagement()
void MainWindow::onOpenLuaScript()
{
if (this->luaDialog) // only one at a time.
if (this->luaDialog)
return;
this->luaDialog = new LuaConsoleDialog(this);
this->luaDialog->show();