Next release of the Engine

Well that is another issue, the architecture support. This was just added to LWJGL 3 3.3.0 release (which is now in jME 3.5). So yes there is that difficulty.

But the issue I was referring to is the LWJGL Mac OS (software side) issue. With the threads. LWJGL 3 needs to be initialized in main thread, and with MacOS this requires some JVM parameters and even then it seems to be a bit challenging sometimes.

The architecture issue of course dictates the necessity to switch to LWJGL 3 if the support is desired.

Yes I’m aware but I wanted to point out that LWJGL2 for Apple silicon will likely never come so Mac OS support will drop by itself when intel Macs won’t be relevant anymore.

1 Like

As I recall, this is what breaks on Macs and any system that requires rendering to be done on the thread that started the application.

1 Like

It could, but would need to be tested on a Mac. I don’t have a Mac, to obscure of a system. So little for it would stop me. Just like the OS/2 from the 90s, great little system but couldn’t hold out to the GIANT killing machine of MicroSoft.

I got to ask, why worry about Mac, since Apple announced getting (not supporting) rid of Mac several years ago. Also, on top of that the percentage of Mac opengl users is SO small. It is not worth the holding back of an engine to support such a small percentage of the opengl world, Mac is less than 10% of the whole world and gaming users on Mac make that even smaller. Windows and Android will get you almost everyone.

With Apple not continuing to update their Opengl, so it will be stuck at a certain version forever. It is like holding your back from getting a new car just to keep that old clunker running, because it has your 8-track in it and you don’t want to get rid of it.

Maybe I’m missing something and I’m new, so you guys might have a plan that I’m not aware of but, with the company has stopped support, why would you hold back to get those few people.

We are still talking about less than 10% of the world market has MacOS running.

Just don’t get holding back for a small percentage. Reminds me of the days of the Atari ST/Amiga/PC battle. I know being open source you probably are trying to grab the largest percentage, but if someone TRUELY wants MacOS, why couldn’t they just downgrade JME to LWJGL2, instead of making it hard for EVERYONE else to upgrade to LWJGL3.

My two sense…

1 Like

My code is no different from the JME-LWJGL2 project. Since LWJGLDisplay or LWJGLWindow is a Runnable Object. You need to start thread.

Inside LWJGL2 project after the runnable object is created they do the following line to get it running and not be block.

        new Thread(this, THREAD_NAME).start();

This is no different from what LWJGL2-JME library is doing. So it shouldn’t affect it.

I plan to freeze the v3.5 feature set and create the “v3.5” branch on 15 December. Enhancements and new features that don’t get integrated to the “master” branch by then will be deferred to v3.6. After the 15th, documentation, new tests, and bug fixes committed to “master” will generally be cherry-picked into “v3.5”.

There’s one enhancement planned for v3.5 that hasn’t been implemented yet, as far as I know:

Does anyone have time to work on 1019 during the next 2 weeks?

There’s also one open pull request for an enhancement:

Let’s complete 1665 in the coming 2 weeks!

2 Likes

I see a pull request that implements this solution:

I need help! Would someone with access to macOS please test it for us?

This does break osx. How lwjgl2 and 3 handle the rendering thread is different.

1 Like

You ran test against the main to verify this, or know from theory?

I know because I tested it at the time.

Just now, “at the time”. meaning some time ago? Based on the same changes?

Based on the fact that I was running into this exact problem when I changed to lwjgl3 for my game since 2 would freeze when alt-tabbing. Someone else submitted the patch at the time. The change they made you basically reverted. Running on the main thread is technically the way it is supposed to be done for glfw, but it only breaks on osx. This is also why AWT has issues on osx with lwjgl3.

Why don’t we do something like.

        // NOTE: this is required for Mac OS X!
        mainThread = Thread.currentThread();
        mainThread.setName("jME3 Main");

        String osName = System.getProperty("os.name");
        if ( osName.contains("Mac") ) {
           mainThread.run();
        } else {
           new Thread(this, "jME3 Main").start();
           if (waitFor)
              waitFor(true);
        }

This is what I do in my engine and I have one beta tester that was able to run the game. It would need to be tested, though.

I think this is something that should be tested. I just don’t have a mac.

This section probably needs to be updated as well if you are not on mac.

It also may make sense to throw an exception if waitFor is false for mac with some sort of error message about being unsupported. That’s probably the best we can do with the current design.

I get the throw exception for mac. I think someone with a mac should try this to make sure it doesn’t run.

But I didn’t follow everything you where saying!

I would go with. Or could through an exception.

        // NOTE: this is required for Mac OS X!
        mainThread = Thread.currentThread();
        mainThread.setName("jME3 Main");

        String osName = System.getProperty("os.name");
        if ( osName.contains("Mac") ) {
           if (waitFor)
              LOGGER.warning("create() called with unsupported waitFor command!");
           mainThread.run();
        } else {
           new Thread(this, "jME3 Main").start();
           if (waitFor)
              waitFor(true);
        }

See: Fix waitFor not being implemented in lwjgl3 by tlf30 · Pull Request #1048 · jMonkeyEngine/jmonkeyengine (github.com)

and
Fixed for windows and linux hack for mac threading by supertick · Pull Request #1513 · jMonkeyEngine/jmonkeyengine (github.com)

I hate to say anything but I just see a bunch of back and forth and some saying JME should handle it, it should be APP. Some say JME and not App and some so worried that Mac will break would rather stick to LWJGL2 that was discontinued 6 years ago.

No one wants to move an inch forward to start moving toward the future, just stuck in the past.

With so little Mac games on Steam, most companies even stopped carrying about Mac OS since it has been discontinued 6 years ago.

My 2 sense is move forward, there is a solution but there appears not enough Mac users to test and program. More worried about sticking to no change because it will break, little volunteers for testing and moving forward. If I had a Mac I would do it.

I"m going to submit what I have.

1 Like

Then drop Linux, too. No, I don’t think that’s the answer.

Given glfw’s position on this topic, the only JME solution is to change the semantics of start() to block and “deal with it”.

Because even on Windows, glfw says you should start from the main thread. The fact that it works is “nice” but could break any day.

And magic OS string checking code is the very worst kind of forever and ever maintenance nightmare.

Edit: also… wait wait wait…

What does this even mean? I’m pretty sure that Apple is still producing Macs and that they run an OS.

3 Likes

What I mean is the continuing support for Opengl, Apple cut it off for continuing updates to keep it going. Was not talking about the OS. OpenGL on MacOS will not move forward from what it was in 2018.

1 Like