From 7581de285f6f1da36a7246efd0c79afb5d588f11 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer <~@ds.me> Date: Sun, 17 Mar 2024 11:50:27 +0100 Subject: [PATCH 1/4] GitHub: Add workaround for macOS CI issues --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49c5a16d15..796daa4420 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,12 @@ jobs: - name: Update run: brew update + - name: Workaround for Python install isssues - https://github.com/actions/runner-images/issues/8838 + run: brew install python@3 || brew link --overwrite python@3 + - name: Dependencies + env: + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 run: brew install boost freetype sdl2 libepoxy qt5 cppunit glm openal-soft - name: Configure From 28f1e183ce97378bc7f650f10e391ec9aef44899 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer <~@ds.me> Date: Sat, 16 Mar 2024 09:50:53 +0100 Subject: [PATCH 2/4] GitHub: Update actions/checkout in GitHub Actions workflows to v3 --- .github/workflows/ci.yml | 4 ++-- .github/workflows/codeql.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 796daa4420..e5b2e04c9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Update run: sudo apt-get update @@ -37,7 +37,7 @@ jobs: runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Update run: brew update diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a1e6e070d9..f4198bf341 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Update run: sudo apt-get update @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v1 From 76f1d2a84551f0261a35241b9bc41edf2b55c029 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer <~@ds.me> Date: Fri, 24 Nov 2023 21:59:54 +0100 Subject: [PATCH 3/4] Update .mailmap --- .mailmap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.mailmap b/.mailmap index e8c9c7e39c..a5373d85ce 100644 --- a/.mailmap +++ b/.mailmap @@ -6,7 +6,8 @@ # bsxf47 -Daniel Scharrer +Daniel Scharrer <~@ds.me> +Daniel Scharrer <~@ds.me> Lubosz Sarnecki Nuky Nuky From 8acd36147ac8f48b4ed18ea938a14734b63f22e8 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer <~@ds.me> Date: Sat, 25 Nov 2023 16:07:41 +0100 Subject: [PATCH 4/4] Player: Remove hero global Fixes a memory leak when destroying a player with armor equipped. --- src/core/ArxGame.cpp | 3 --- src/game/Equipment.cpp | 4 +--- src/game/Player.cpp | 8 +++----- src/game/Player.h | 1 - 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/core/ArxGame.cpp b/src/core/ArxGame.cpp index 7d1e6da5a7..b430ed85d4 100644 --- a/src/core/ArxGame.cpp +++ b/src/core/ArxGame.cpp @@ -905,10 +905,7 @@ bool ArxGame::addPaks() { static void ReleaseSystemObjects() { - delete hero, hero = nullptr; - if(entities.size() > 0 && entities.player() != nullptr) { - entities.player()->obj = nullptr; // already deleted above (hero) delete entities.player(); arx_assert(entities.size() > 0 && entities.player() == nullptr); } diff --git a/src/game/Equipment.cpp b/src/game/Equipment.cpp index 5c5b760460..13b74bf58b 100644 --- a/src/game/Equipment.cpp +++ b/src/game/Equipment.cpp @@ -221,8 +221,7 @@ void ARX_EQUIPMENT_RecreatePlayerMesh() { arx_assert(entities.player()); Entity * io = entities.player(); - if(io->obj != hero) - delete io->obj; + delete io->obj; io->obj = loadObject("graph/obj3d/interactive/npc/human_base/human_base.teo", false).release(); @@ -250,7 +249,6 @@ void ARX_EQUIPMENT_RecreatePlayerMesh() { ARX_INTERACTIVE_Show_Hide_1st(entities.player(), !EXTERNALVIEW); ARX_INTERACTIVE_HideGore(entities.player(), false); - EERIE_Object_Precompute_Fast_Access(hero); EERIE_Object_Precompute_Fast_Access(entities.player()->obj); ARX_INTERACTIVE_RemoveGoreOnIO(entities.player()); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 98c7d2559f..b43c75afdc 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -147,7 +147,6 @@ extern long COLLIDED_CLIMB_POLY; static const float ARX_PLAYER_SKILL_STEALTH_MAX = 100.f; ARXCHARACTER player; -EERIE_3DOBJ * hero = nullptr; float currentdistance = 0.f; float CURRENT_PLAYER_COLOR = 0; AnimationDuration PLAYER_ROTATION = 0; @@ -1083,9 +1082,6 @@ void ARX_PLAYER_Restore_Skin() { */ void ARX_PLAYER_LoadHeroAnimsAndMesh() { - hero = loadObject("graph/obj3d/interactive/npc/human_base/human_base.teo", false).release(); - PLAYER_SKIN_TC = TextureContainer::Load("graph/obj3d/textures/npc_human_base_hero_head"); - herowaitbook = EERIE_ANIMMANAGER_Load("graph/obj3d/anims/npc/human_wait_book.tea"); EERIE_ANIMMANAGER_Load("graph/obj3d/anims/npc/human_normal_wait.tea"); herowait_2h = EERIE_ANIMMANAGER_Load("graph/obj3d/anims/npc/human_wait_book_2handed.tea"); @@ -1095,7 +1091,9 @@ void ARX_PLAYER_LoadHeroAnimsAndMesh() { arx_assert(entities.player() == io); arx_assert(io->idString() == "player"); - io->obj = hero; + arx_assert(!io->obj); + io->obj = loadObject("graph/obj3d/interactive/npc/human_base/human_base.teo", false).release(); + PLAYER_SKIN_TC = TextureContainer::Load("graph/obj3d/textures/npc_human_base_hero_head"); player.skin = 0; ARX_PLAYER_Restore_Skin(); diff --git a/src/game/Player.h b/src/game/Player.h index 573809a7fa..1ab1920783 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -408,7 +408,6 @@ struct ARXCHARACTER { extern float CURRENT_PLAYER_COLOR; extern ARXCHARACTER player; -extern EERIE_3DOBJ * hero; extern ANIM_HANDLE * herowaitbook; extern ANIM_HANDLE * herowait_2h; extern std::vector g_playerQuestLogEntries;