Files
GabsPuNs-Project_Zenith_Main/Minecraft.Client/Screen.h
Zero 5ccc8db088 Fix multiple memory leaks and stale pooled allocations
* Fix Vec3/AABB pool reset logic

  * resetPool()/clearPool() now reset poolPointer to 0
  * Prevents endless pool growth, invalid temporary references,
    and increasing memory usage
  * Resolves the leaderboard-related crash mentioned in
    Windows64_Minecraft.cpp

* Properly free old screens in Minecraft::setScreen()

  * Added virtual destructor to Screen
  * Screen destructor now cleans up GuiParticles and Buttons
  * Previous screen is now deleted after screen transitions
  * Screen::init() now clears old buttons/particles before re-init

* Fix GuiParticles memory leak

  * Removed GuiParticle instances are now deleted in tick()
  * Added GuiParticles destructor to free remaining particles
2026-05-26 16:08:09 +02:00

59 lines
1.4 KiB
C++

#pragma once
#include "GuiComponent.h"
class Button;
class GuiParticles;
class Minecraft;
using namespace std;
class Screen : public GuiComponent
{
protected:
Minecraft *minecraft;
public:
int width;
int height;
protected:
vector<Button *> buttons;
public:
bool passEvents;
protected:
Font *font;
public:
GuiParticles *particles;
Screen(); // 4J added
virtual ~Screen();
virtual void render(int xm, int ym, float a);
protected:
virtual void keyPressed(wchar_t eventCharacter, int eventKey);
public:
static wstring getClipboard();
static void setClipboard(const wstring& str);
private:
Button *clickedButton;
protected:
virtual void mouseClicked(int x, int y, int buttonNum);
virtual void mouseReleased(int x, int y, int buttonNum);
virtual void buttonClicked(Button *button);
public:
virtual void init(Minecraft *minecraft, int width, int height);
virtual void setSize(int width, int height);
virtual void init();
virtual void handlePasteRequest() {}
virtual void handleHistoryUp() {}
virtual void handleHistoryDown() {}
virtual void updateEvents();
virtual void mouseEvent();
virtual void keyboardEvent();
virtual void tick();
virtual void removed();
virtual void renderBackground();
virtual void renderBackground(int vo);
virtual void renderDirtBackground(int vo);
virtual bool isPauseScreen();
virtual void confirmResult(bool result, int id);
virtual void tabPressed();
};