Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SSR goes in the foreground, when recording Minecraft #479

Open
JakobDev opened this issue Aug 18, 2016 · 9 comments
Open

SSR goes in the foreground, when recording Minecraft #479

JakobDev opened this issue Aug 18, 2016 · 9 comments
Labels

Comments

@JakobDev
Copy link

When I start SSS, when Minecrsft is in fullscreen mode, SSS minimize Minecraft and goes in the foreground, so I have to maximize Minecraft while recording. I use Oracle JDK 1.8.0_92.

@StripedMonkey
Copy link

Are you using glinject? and its SSR not SSS :P

On Thu, Aug 18, 2016 at 7:53 AM, Wilma456 notifications@github.com wrote:

When I start SSS, when Minecrsft is in fullscreen mode, SSS minimize
Minecraft and goes in the foreground, so I have to maximize Minecraft while
recording. I use Oracle JDK 1.8.0_92.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#479, or mute the thread
https://github.com/notifications/unsubscribe-auth/AHo2RIralPMcUnH0OTfNOgymRZfKb6Z8ks5qhEe_gaJpZM4JnaX2
.

@JakobDev
Copy link
Author

Whats glinject?

@JakobDev JakobDev changed the title SSS goes in the foreground, when recording Minecraft SSR goes in the foreground, when recording Minecraft Aug 19, 2016
@StripedMonkey
Copy link

Using openGL to record the game, for instance to record minecraft you would
use "java -jar Minecraft.jar" as the command. If you use this method to
record your games it will ensure nothing else but minecraft is recorded

On Fri, Aug 19, 2016 at 8:48 AM, Wilma456 notifications@github.com wrote:

Whats glinject?


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#479 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHo2RGxMmIaiscXXUjoAY0BTt7kMjJSmks5qhaYvgaJpZM4JnaX2
.

@MaartenBaert
Copy link
Owner

MaartenBaert commented Aug 22, 2016

I have never seen this happen myself. SSR certainly doesn't minimize Minecraft, it has no ability to do that. Minecraft must be minimizing itself, but I have no idea why. Are you using the hotkey to start the recording? Does changing the hotkey to something else have any effect? Does Minecraft also minimize itself if you press the same hotkey when SSR is not running?

@JakobDev
Copy link
Author

Are you tested this with Oracle JDK? I have more information: My OS is Ubuntu 16.04. I use Gnome Flashback (Metacity) as Desktop, but I have the Problem with Unity too. Here are the Output from my Terminal:
==================== SSR gestartet ==================== SimpleScreenRecorder 0.3.6 Compiled with GCC 5.3.1 Qt: header 4.8.7, lib 4.8.7 libavformat: header 56.40.101, lib 56.40.101 libavcodec: header 56.60.100, lib 56.60.100 libavutil: header 54.31.100, lib 54.31.100 libswscale: header 3.1.101, lib 3.1.101 [CPUFeatures::Detect] CPU Merkmale: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 [ALSAInput::GetSourceList] Generiere Quell-Liste... [ALSAInput::GetSourceList] Karte gefunden: [hw:0] HDA Intel PCH [ALSAInput::GetSourceList] Gerät gefunden: [hw:0,0] HDA Intel PCH: ALC233 Analog [PulseAudioInput::GetSourceList] Generiere Quell-Liste... [SourceNamesCallback] Quelle gefunden: [alsa_output.pci-0000_00_1b.0.analog-stereo.monitor] Monitor of Internes Audio Analog Stereo [SourceNamesCallback] Quelle gefunden: [alsa_input.pci-0000_00_1b.0.analog-stereo] Internes Audio Analog Stereo [PageRecord::StartPage] Start-Seite... [PageRecord::StartPage] Seite gestartet. [SimpleSynth::Init] Warnung: Puffer-Größe 2048 wird nicht unterstützt, es wird 3072 anstatt verwendet. Das ist kein Problem. [SimpleSynth::SynthThread] Synth-Prozess gestartet. [MakeThreadHighPriority] Warnung: konnte die Prozess-Priorität nicht erhöhen. [PageRecord::StartOutput] Ausgabe wird gestoppt... [Muxer::Init] Verwende Format mp4 (MP4 (MPEG-4 Part 14)). [Muxer::AddStream] Verwende Codec libx264 (libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10). [VideoEncoder::PrepareStream] Verwende Pixel-Format nv12 [libx264 @ 0x27a7820] using SAR=1/1 [libx264 @ 0x27a7820] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 [libx264 @ 0x27a7820] profile High, level 3.2 [libx264 @ 0x27a7820] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x3 me=dia subme=1 psy=1 psy_rd=1,00:0,00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc=crf mbtree=0 crf=23,0 qcomp=0,60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1,40 pb_ratio=1,30 aq=1:1,00 [Muxer::AddStream] Verwende Codec libvorbis (libvorbis). [AudioEncoder::PrepareStream] Verwende Sample-Format f32p [BaseEncoder::EncoderThread] Starte Kodierungs-Prozess. [BaseEncoder::EncoderThread] Starte Kodierungs-Prozess. [PageRecord::StartOutput] Ausgabe gestartet. [Muxer::MuxerThread] Muxer-Prozess gestartet. [Synchronizer::SynchronizerThread] Synchronisierungs-Prozess gestartet. [PageRecord::StartInput] Eingabe wird gestartet... [X11Input::Init] Verwende X11 geteilten Speicher. [X11Input::InputThread] Eingabe-Prozess gestartet. [PageRecord::StartInput] Eingabe gestartet. [PulseAudioInput::InputThread] Eingabe-Prozess gestartet. [FastResampler::Resample] Resample Rate ist 1.0000 (war 0.0000). [PageRecord::StopOutput] Ausgabe wird angehalten... [PageRecord::StopOutput] Ausgabe angehalten. [PageRecord::StopInput] Eingabe wird angehalten... [X11Input::~X11Input] Stoppe Eingabe Prozess... [X11Input::InputThread] Eingabe-Prozess angehalten. [PulseAudioInput::~PulseAudioInput] Stopping input thread ... [PulseAudioInput::InputThread] Eingabe-Prozess angehalten. [PageRecord::StopInput] Eingabe angehalten. [PageRecord::StopPage] Seite wird angehalten... [Synchronizer::~Synchronizer] Stoppe Synchronisierungs-Prozess... [Synchronizer::SynchronizerThread] Synchronisierungs-Prozess angehalten. [Muxer::Finish] Finalisiere Kodierer... [BaseEncoder::EncoderThread] Kodierer wird geleert... [BaseEncoder::EncoderThread] Kodierer wird geleert... [BaseEncoder::EncoderThread] Kodierungs-Prozess angehalten. [BaseEncoder::EncoderThread] Kodierungs-Prozess angehalten. [Muxer::MuxerThread] Muxer-Prozess angehalten. [Muxer::~Muxer] Kodierer werden gestoppt... [Muxer::~Muxer] Warte darauf, dass der Muxer-Prozess angehalten wird... [BaseEncoder::~BaseEncoder] Stoppe Kodierungs-Prozess... [libx264 @ 0x27a7820] frame I:1 Avg QP:18,81 size:163944 [libx264 @ 0x27a7820] frame P:17 Avg QP:17,95 size: 8344 [libx264 @ 0x27a7820] frame B:48 Avg QP:19,15 size: 185 [libx264 @ 0x27a7820] consecutive B-frames: 3,0% 0,0% 0,0% 97,0% [libx264 @ 0x27a7820] mb I I16..4: 38,2% 5,4% 56,4% [libx264 @ 0x27a7820] mb P I16..4: 0,6% 0,0% 0,1% P16..4: 17,7% 0,0% 0,0% 0,0% 0,0% skip:81,6% [libx264 @ 0x27a7820] mb B I16..4: 0,0% 0,0% 0,0% B16..8: 0,7% 0,0% 0,0% direct: 1,3% skip:98,0% L0: 7,7% L1:92,3% BI: 0,0% [libx264 @ 0x27a7820] 8x8 transform intra:5,0% inter:14,4% [libx264 @ 0x27a7820] coded y,uvDC,uvAC intra: 52,1% 56,0% 51,6% inter: 1,8% 3,9% 1,9% [libx264 @ 0x27a7820] i16 v,h,dc,p: 61% 37% 1% 1% [libx264 @ 0x27a7820] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 24% 11% 9% 5% 5% 9% 6% 19% [libx264 @ 0x27a7820] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 29% 7% 6% 6% 6% 7% 4% 8% [libx264 @ 0x27a7820] i8c dc,h,v,p: 50% 26% 18% 6% [libx264 @ 0x27a7820] Weighted P-Frames: Y:0,0% UV:0,0% [libx264 @ 0x27a7820] kb/s:1127,12 [BaseEncoder::~BaseEncoder] Stoppe Kodierungs-Prozess... [PageRecord::StopPage] Seite gestoppt. [SimpleSynth::~SimpleSynth] Stoppe Synth-Prozess... [SimpleSynth::SynthThread] Synth-Prozess angehalten. ==================== SSR angehalten ====================
And here are a picture of my config:
ssr

@MaartenBaert
Copy link
Owner

I see what you mean now. I can reproduce it if I put Minecraft in fullscreen by pressing F11, but that's not what I usually do. Usually I use Super+F, a shortcut which I've set up in my window manager which puts the current application in fullscreen (works with anything, not just Minecraft). When I do this there is no problem.

This seems to be a problem with Minecraft, not with SSR. I get the same results when I press Alt+F2 or any other global hotkey, even when SSR is not running. So I suggest you just do what I do, configure a global hotkey in your window manager and use that instead of F11. This is not something that I can fix from SSR.

@Brottweiler
Copy link

Usually I use Super+F, a shortcut which I've set up in my window manager which puts the current application in fullscreen (works with anything, not just Minecraft). When I do this there is no problem.

That sounds probable because it's not "true fullscreen", or whatever that would mean. It's just maximized and no border. Maximizing a window is no problem, it's just bigger, and if you remove border, then it covers entire screen depending on panels you might have and preferences for them... This is my guess why it works.

@MaartenBaert
Copy link
Owner

It's the other way around. My shortcut asks the window manager to make the game fullscreen, which is the 'right' way to do fullscreen on X11. The application-level equivalent is setting _NET_WM_STATE_FULLSCREEN, which tells the window manager that it should make that window fullscreen. This is what decently written Linux applications (e.g. firefox) do.

Unfortunately there are a lot of poorly written applications and libraries out there that don't know that _NET_WM_STATE_FULLSCREEN exists, and instead try to implement it themselves, usually poorly:

  • remove window border
  • place window at (0, 0)
  • resize window to screen resolution
  • mark window as 'always on top'
  • realize that this doesn't work on X11 because 'always on top' is still below the panel (unlike on Windows)
  • bypass window manager to force the window above the panel
  • realize that mouse and keyboard are now broken because the window manager doesn't know your window exists
  • do a full mouse and keyboard grab so they mouse and keyboard work again
  • realize that volume keys, alt+tab, alt+F2 and all other global hotkeys are now broken
  • give up

Optional extras:

  • change the resolution without asking
  • fail to change the resolution back when the game exits
  • force the game to run only on the primary monitor
  • disable the secondary monitor
  • fail to re-enable the secondary monitor
  • overwrite the user-defined gamma curves for no reason

This is what SDL 1 did. It's what many games still do, and why my global hotkey code in SSR is so ridiculously complex - I'm basically running a low-level keylogger just to make sure the hotkey still works when broken games grab the keyboard.

Apparently Minecraft has followed a somewhat different pattern. Their fullscreen implementation is only partially broken. It works with the 'nvidia' driver but fails with the open-source 'radeon' driver (just gives you a frozen screen). It does overwrite the gamma curves but at least it leaves the resolution alone. It does not mess with secondary monitors. It does not switch to the wrong screen either. It does not break global hotkeys, but somehow it does minimize itself when you press any hotkey (even the volume buttons, apparently).

There is no such thing as 'true fullscreen' (the technical term is 'exclusive mode') on Linux, this is something which exists in DirectX but not in OpenGL. With OpenGL, you can just switch between windowed and fullscreen because there's no real difference, and the window manager will enable page flipping when this is possible. Page flipping is almost equivalent to DirectX exclusive mode without actually being exclusive. There is absolutely no reason why applications should have to implement their own broken fullscreen attempts, it does not gain them any performance and it just breaks the window manager.

@JakobDev
Copy link
Author

I think. recording in window is now the best method. Thank you for your efforts!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants