YoYoGames / GameMaker-Bugs

Public tracking for GameMaker bugs
21 stars 8 forks source link

Can't Go Borderless Mode Using Native Extension On Mac #6799

Open time-killer-games opened 1 month ago

time-killer-games commented 1 month ago

Description

I wrote an extension which used to be able to let the game go borderless mode on Windows, macOS, and Linux. While Windows and Linux still work, it seems internal changes to the macOS runner are preventing the extension from working in newer releases of GameMaker. I want to also add that the dylib's internal code works in a raw Objective-C Xcode project, completely separate from GameMaker, so it is clear to me this is a GameMaker bug. Under the extensions subfolder of the project folder, there is the source code to the dylib.

Expected Change

Allow Going Borderless Mode Using Native Extension On Mac

Steps To Reproduce

  1. Start GameMaker
  2. Import Reproducible YYZ: BorderToggler.zip
  3. Run project, attempt to click on the window
  4. See the issue, nothing happens, the window decorations/titlebar/border does not go away or toggle like it was supposed to

How reliably can you recreate this issue using your steps above?

Always

Which version of GameMaker are you reporting this issue for?

2024.6.2 (Monthly)

Which platform(s) are you seeing the problem on?

macOS

Contact Us Package Attached?

Sample Project Added?

jackerley commented 1 month ago

Hi, your project is calling the newly added built in function window_set_showborder/window_get_showborder which doesn't work on Mac. You'll need to change the name of the function that your extension is providing to something different to avoid collisions with the built in functions. Note you shouldn't need to change your extension itself as you can specify a different External Name, but you will need to change your call from gml and the function name that your extension exposes.

time-killer-games commented 1 month ago

Hi, your project is calling the newly added built in function window_set_showborder/window_get_showborder which doesn't work on Mac. You'll need to change the name of the function that your extension is providing to something different to avoid collisions with the built in functions. Note you shouldn't need to change your extension itself as you can specify a different External Name, but you will need to change your call from gml and the function name that your extension exposes.

I'll try that, thank you!

time-killer-games commented 1 month ago

Hi, your project is calling the newly added built in function window_set_showborder/window_get_showborder which doesn't work on Mac. You'll need to change the name of the function that your extension is providing to something different to avoid collisions with the built in functions. Note you shouldn't need to change your extension itself as you can specify a different External Name, but you will need to change your call from gml and the function name that your extension exposes.

Hey, I changed the functions' External Names to window_get_hasborder() and window_set_hasborder() to prevent collision with the internal GML functions and that did not fix it, same issue is there. Thank you for the help, however.

Note: I also made sure I did so with the #define's in the libborderless.gml file.

BorderToggler.zip

time-killer-games commented 1 month ago

@gurpreetsinghmatharoo I guess that means you guys don't intend to fix this even though I confirmed this is a legit bug and can't be fixed on my end with the "workaround" @jackerley suggested? It's ok if not, but it will disappoint a lot of my clients who relied on my extension for their projects on macOS.

gurpreetsinghmatharoo commented 1 month ago

@time-killer-games The status change was done based on the ticket being closed. I will reopen it now as per your last comment.

jackerley commented 1 month ago

I'm going to need the source for your extension if you want me to look at what's happening there?

time-killer-games commented 1 month ago

I'm going to need the source for your extension if you want me to look at what's happening there?

The source of the extension is in the libborderless.zip file under the extensions/libborderless subfolder if I remember correctly. Thank you!