I finally got that mofo to work.
void vid_bitmap_refresh()
{
enabled_refresh_physical_screen=1;
*(int*)0x1B2DC=3;//this is set somewhere in a function called by RefreshPhysicalScreen, should be easy to find
_RefreshPhysicalScreen(1);
}
The magic variable, 0x1B2DC, is set to 3 when going into the camera menu. When going there, the screen was always refreshed. So I set it as 3 before refreshing the screen, and now it works perfectly!