It depends what do you need.
You mentioned that you have activateButtonEx and I explained you that you should run it only by condition (and how to get this condition in script).
"Enter animation/action" is used before animating and showing the menu.
"Action every second" responsible for immediate updating of the menu.
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
-
Alexey Kolesnikov
- Posts: 711
- Joined: Fri Mar 01, 2013 1:03 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Best regards,
Alexey Kolesnikov
Alexey Kolesnikov
-
rickemail2
- Posts: 79
- Joined: Fri Jun 25, 2021 9:45 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
It would be for "Action every second" for immediate switching when paused by the player; I'm sending you a video for analysis.Alexey Kolesnikov wrote: Wed Apr 15, 2026 5:54 pm It depends what do you need.
You mentioned that you have activateButtonEx and I explained you that you should run it only by condition (and how to get this condition in script).
"Enter animation/action" is used before animating and showing the menu.
"Action every second" responsible for immediate updating of the menu.
https://www.transfernow.net/dl/20260415URYrT5Kc
-
Alexey Kolesnikov
- Posts: 711
- Joined: Fri Mar 01, 2013 1:03 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
You need to move Selected state as well (and other states if you have them).
Best regards,
Alexey Kolesnikov
Alexey Kolesnikov
-
rickemail2
- Posts: 79
- Joined: Fri Jun 25, 2021 9:45 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Hi Alexey,Alexey Kolesnikov wrote: Sun Mar 22, 2026 7:07 amTopMenu call is not handled by Java. Player just changes the title.rickemail2 wrote: Sun Mar 22, 2026 3:26 am Why doesn't "manager.clearBackground();" work when we press the "J" key in PowerDVD during the main menu call, and why doesn't the background clear occur?
But as far as I can see in your video you're navigating to the main menu from a popup menu.
All changes to the background are not immediate. You can try to do it in the next order: scale movie back, clear background, wait 1 second, redirect to the main menu.
Or, I would do it differently:
1. Add a black jpeg to the backgrounds list.
2. Use any GPR as a command flag (to decide which action to execute). F.e. set GPR[10] = 1 to execute navigation to the main menu.
3. Instead of navigation to the main menu - set GPR and call function to set the black background.
4. In the Project properties -> Functions -> Image loaded script check for the appropriate value in the GPR and execute the appropriate action (if GPR[10] = 1 -> Jump Main menu).
I would like to share one technical detail observed in Universal/Pixelogic Blu-ray titles. This is only a reference showing how Universal achieves a clean Top Menu transition; I am not suggesting that BDS should reproduce the same Java architecture.
Universal controls the BD-J Background Plane through the standard HAVi classes:
HBackgroundDevice — provides access to and reserves the Background Plane.
HStillImageBackgroundConfiguration — controls the still-image configuration of that plane.
HBackgroundImage — loads and prepares the image displayed behind the scaled video.
While the popup is active, the background image is displayed approximately as follows:
backgroundConfiguration.displayImage(backgroundImage);
When leaving the movie or calling the Top Menu, Universal does not load another black JPEG. Instead, the existing background is removed by directly changing the Background Plane to a solid black color:
backgroundConfiguration.setColor(Color.black);
This avoids the loading delay associated with another JPEG and immediately replaces the previous background image.
In the examined Universal code, this operation appears to be part of a central teardown routine, through an obfuscated call similar to:
dj.bK().bX();
The exact class names are obfuscated, but the observed purpose of this routine is to restore the presentation state before or during the transition:
Clear the popup graphics
Reset the Background Plane to black
Restore the normal Video Plane state
Continue to the Top Menu
The cleanup routine is called from multiple lifecycle situations, including popup closing, presentation exit or change, media start, movie stop and application exit.
This is why the result works even when the player processes the Top Menu command directly. The Java application does not necessarily need to capture the Top Menu/J key itself. When the player stops or changes the current presentation, the teardown routine is invoked and clears everything that belonged to the movie.
The important result is:
Top Menu is called
→ popup graphics disappear
→ scaled video is removed or restored
→ Background Plane is cleared
→ Top Menu appears with nothing from the movie left on screen
I understand that the BDS engine is different and may not use this architecture. I am only showing how Universal obtains a completely clean transition.
Is there a way for BDS to perform its existing popup, video and background cleanup early enough when the player processes a Top Menu call, so that nothing from the movie remains visible while the menu is loading?
-
Alexey Kolesnikov
- Posts: 711
- Joined: Fri Mar 01, 2013 1:03 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Hi Ricardo,
It basically says here to preload image and let it stays in memory - only show/hide it.
Make sense, but it takes memory.
Anyway, will add this mode.
It basically says here to preload image and let it stays in memory - only show/hide it.
Make sense, but it takes memory.
Anyway, will add this mode.
Best regards,
Alexey Kolesnikov
Alexey Kolesnikov
-
rickemail2
- Posts: 79
- Joined: Fri Jun 25, 2021 9:45 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Thank you, Alexey.Alexey Kolesnikov wrote: Thu Aug 06, 2026 7:48 pm Hi Ricardo,
It basically says here to preload image and let it stays in memory - only show/hide it.
Make sense, but it takes memory.
Anyway, will add this mode.
Yes, that is exactly the idea: preload the Background Plane image once, keep it in memory, and then only show or hide it. This avoids the delay caused by loading the image asynchronously every time the popup is opened.
The most important point in this case is the timing of the hide/reset operation. It needs to happen at the very beginning of the Top Menu or title-change processing, before the player removes the movie video and the popup graphics.
Otherwise, the popup graphics and the resized video disappear first, while the previous Background Plane image remains visible during the transition.
Ideally, the same automatic Background Plane reset could also be executed as a safety measure during:
- Top Menu call
- Title change
- Movie stop
- Presentation exit
- Start of a new media presentation
I also confirmed this behavior directly on the original Universal disc: with the popup open and the movie scaled/repositioned over the Background Plane, pressing Top Menu first clears the popup/background and restores the movie video to its original full-screen size. Only after this complete reset does it continue to the Top Menu.
Since BDS now supports a short transition video before opening the Top Menu, this could also be the ideal point to perform the complete popup reset immediately before the transition video starts.
The desired sequence would be:
Top Menu call starts
→ clear popup graphics
→ hide or reset the Background Plane immediately
→ restore the movie Video Plane to its original full-screen size
→ clear the popup state
→ start the transition video
→ continue loading the Main Menu
This confirms that the Universal/Pixelogic implementation performs a complete popup presentation reset, not only a Background Plane reset.
This would reproduce the clean transition used by Universal/Pixelogic, even when the Top Menu command is processed directly by the player instead of Java.
Thank you for considering adding this mode to BDS.
-
Alexey Kolesnikov
- Posts: 711
- Joined: Fri Mar 01, 2013 1:03 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Hi Ricardo,
I added "Project properties" → "Menu" → "Buttons and actions" → "Preload all background images on disc load".
You can enable it and after this use showBackgroundImage to show the image and clearBackground to hide it.
I added "Project properties" → "Menu" → "Buttons and actions" → "Preload all background images on disc load".
You can enable it and after this use showBackgroundImage to show the image and clearBackground to hide it.
Best regards,
Alexey Kolesnikov
Alexey Kolesnikov
-
rickemail2
- Posts: 79
- Joined: Fri Jun 25, 2021 9:45 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Hi Alexey,Alexey Kolesnikov wrote: Sun Aug 09, 2026 8:26 pm Hi Ricardo,
I added "Project properties" → "Menu" → "Buttons and actions" → "Preload all background images on disc load".
You can enable it and after this use showBackgroundImage to show the image and clearBackground to hide it.
I tested beta 4.7.3.2365 more thoroughly in PowerDVD and also reviewed the updated Java API, the complete Background Plane documentation, and your earlier explanation about how a real Top Menu call works.
The new Background Plane preload system is working correctly.
With:
Project properties → Menu → Preload all background images on disc load
enabled, bg1.jpg is loaded in advance and:
manager.showBackgroundImage("bg1.jpg");
displays the Background Plane immediately when the popup is opened.
So the new loading/preloading side is working as intended:
preloadBackgroundImage()
→ Image loaded callback
→ isBackgroundImageLoaded()
→ showBackgroundImage()
The problem that remains is not related to image loading speed.
When the popup is open and I press Top Menu / J in PowerDVD, the sequence is still approximately:
1. The Popup Graphics Plane disappears.
2. The scaled movie video is removed/restored.
3. bg1.jpg remains visible on the Background Plane for a short moment.
4. The Background Plane is the last part of the popup presentation to disappear.
5. Then the Main Menu presentation becomes visible.
I tested all the relevant public Background Plane methods available in the updated Java API.
First:
manager.clearBackground();
manager.scaleBack();
manager.syncDisplay();
According to the documentation, clearBackground() clears both the background image and background color and restores their default values.
The result was unchanged.
I then tested:
manager.setBackgroundColor(0x000000);
manager.scaleBack();
manager.syncDisplay();
This test is particularly relevant because the updated documentation explicitly says that setBackgroundColor() also clears any previously displayed background image.
The result in PowerDVD was exactly the same.
The popup/video presentation changes first, while bg1.jpg remains visible and is still the last element to disappear.
I also tested:
manager.clearBackground();
manager.flushBackgroundImage("bg1.jpg");
manager.scaleBack();
manager.syncDisplay();
Again, the visual result during Top Menu was unchanged.
This also makes sense after reviewing the documentation, because:
manager.flushBackgroundImage("bg1.jpg");
only releases the memory occupied by the preloaded image. It is a memory-management function, not a presentation-hide function.
Therefore flushBackgroundImage() is not an appropriate solution for this situation.
In this project I actually want bg1.jpg to remain preloaded, because the popup can be opened repeatedly.
What I need during the Top Menu transition is conceptually:
bg1.jpg:
loaded = true
visible = false
In other words, the displayed Background Plane should be reset immediately, while the preloaded JPEG remains available in memory.
The new API already separates the loading and presentation concepts very well:
preloadBackgroundImage() = load into memory
showBackgroundImage() = display the loaded image
clearBackground() / setBackgroundColor() = remove the currently displayed background
flushBackgroundImage() = release the preloaded image from memory
The problem appears to be the timing of the Background Plane reset during a real Top Menu call.
I also reviewed your earlier explanation where you said:
“The TopMenu call is not handled by Java. The player just changes the title.”
I think this is a very important point and it explains why the normal Java Top Menu actions cannot solve the problem reliably.
Previously I was thinking in terms of resetting the Background Plane at the beginning of callTopMenu / TopMenuListener.
However, after reviewing your explanation again, I think that wording was not completely accurate.
The TopMenuListener / callTopMenu sequence visible in the BDS simulator should not necessarily be considered an interceptable Java event on a real hardware/software player.
In PowerDVD, pressing J causes the player itself to begin the Title change.
Therefore, by the time a normal Java action can execute:
manager.clearBackground();
or:
manager.setBackgroundColor(0x000000);
the player may already have started replacing the current Movie presentation.
This would explain exactly what I am seeing:
Top Menu pressed
→ player begins Title/presentation change
→ Popup Graphics disappear
→ scaled Video Plane changes/restores
→ Background Plane is still latched underneath
→ Background Plane finally disappears
→ Main Menu presentation appears
This also explains why manager.syncDisplay() does not solve it.
According to the updated Java API:
manager.syncDisplay();
“synchronizes graphics before long operations.”
It does not appear to prevent the player from beginning the Top Menu Title change, nor does it guarantee that the Background Plane has been reset before that change.
I also checked:
manager.isTopMenuPressed()
but the documentation specifically says:
“returns true if the Top Menu button was pressed (used during the initialization process)”
so it does not provide a runtime interception point before the real Top Menu Title change.
manager.Close_Popup();
does not solve the fundamental timing issue either, because it executes the normal [close popup] action. If the real Top Menu request has already caused the player to begin the Title transition, this still happens too late.
So I would like to correct one point from my previous message:
I no longer think the solution should depend specifically on callTopMenu / TopMenuListener.
Because, as you explained, a real Top Menu call is not handled first by Java.
What seems to be needed is a presentation/title lifecycle cleanup mechanism in BDS.
If the current Movie presentation is being left while a Background Plane is active, BDS would need to reset that plane as early as technically possible during the presentation/title teardown.
Conceptually:
Current Movie + popup active
→ player requests/leaves current Title
→ BDS detects that current presentation is being abandoned
→ immediately reset/hide active Background Plane
→ restore Video Plane if necessary
→ clear/reset popup graphics/state
→ then allow the new Menu Title presentation to become visible
The important point is that this cleanup should not depend only on the Top Menu button itself.
It would ideally be part of the presentation lifecycle whenever the current Movie presentation is being abandoned.
This matches what I observed in an official Universal disc using this style of popup.
On the official disc, when Top Menu is pressed while the popup is open, the disc first returns the current Movie presentation to a clean state:
- Popup graphics disappear;
- Background Plane is reset;
- scaled movie video returns to its original full-screen presentation;
- only after that complete reset does the transition to the Main Menu continue.
So there is never a moment where the Background Plane becomes exposed by itself after the Video/Graphics presentation has already disappeared.
The official Java implementation I examined also appears to use a centralized popup/background/video teardown routine.
The same reset logic is called from several presentation lifecycle paths, not only from the popup close action itself.
This seems important because it means the cleanup does not rely exclusively on intercepting the Top Menu key.
It is performed whenever the presentation is being closed, changed or abandoned.
That architecture would explain why the official disc does not leave the Background Plane visible during the transition.
The new preload functionality in 4.7.3.2365 solves the other half of this very well.
Previously, Background Plane changes could be delayed because the JPEG had to be read from disc.
Now:
preloadBackgroundImage()
→ image stays ready in memory
→ showBackgroundImage()
makes the SHOW operation effectively immediate.
So the current status is:
PRELOAD:
Working correctly.
Image loaded callback:
Working as designed for asynchronous image loading.
showBackgroundImage:
Working correctly and immediately when the image is preloaded.
Normal popup closing:
clearBackground() + scaleBack() works correctly.
Top Menu / J:
Background Plane still disappears too late.
clearBackground():
Same result during Top Menu.
setBackgroundColor(0x000000):
Same result during Top Menu.
flushBackgroundImage():
Does not change the visual timing, and it should not be required because it is a memory-management function.
syncDisplay():
Does not change the behavior.
So at this point I do not think there is another public Java method that I can use to solve the problem from the Action Matrix.
The remaining issue appears to be the lifecycle/timing of the Background Plane during the player-controlled Title change.
Ideally, BDS would perform a centralized presentation teardown when leaving a Movie presentation that currently has an active Background Plane:
- hide/reset the Background Plane;
- restore the primary Video Plane if it was scaled;
- reset the popup graphics/presentation state;
- keep the preloaded JPEG in memory;
- then continue with the Menu Title/transition presentation.
In other words, for the background image:
loaded = true
visible = false
before the new Title presentation becomes visible.
This would also be safer for hardware players, because no Movie Background Plane image could remain latched/exposed while the other presentation planes are already changing.
The BDS simulator is limited regarding actual Background Plane rendering, so all visual confirmation of this issue is being done directly in PowerDVD, where the Background Plane itself works correctly.
Thank you.
-
Alexey Kolesnikov
- Posts: 711
- Joined: Fri Mar 01, 2013 1:03 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Please do not generate huge texts with AI. I basically ignore huge texts, as I don't have a time to read them.
I will add "Clear background on video scale back" option. Thus it will always clear the background when video size is restored to normal.
I will add "Clear background on video scale back" option. Thus it will always clear the background when video size is restored to normal.
Best regards,
Alexey Kolesnikov
Alexey Kolesnikov
-
rickemail2
- Posts: 79
- Joined: Fri Jun 25, 2021 9:45 pm
Current Scene Highlight in the Carousel based on the "Escape Dovi UHD" Project.
Please excuse me Alexey, I just wanted to be more technical and transparent, it won't be repeated anymore.Alexey Kolesnikov wrote: Mon Aug 10, 2026 6:15 am Please do not generate huge texts with AI. I basically ignore huge texts, as I don't have a time to read them.
I will add "Clear background on video scale back" option. Thus it will always clear the background when video size is restored to normal.
Thank you.