Screen capture in SDL (Ubuntu)? - Printable Version

+- (
+-- Forum: PPSSPP - Playstation Portable Simulator Suitable for Playing Portably (/forumdisplay.php?fid=1)
+--- Forum: Development (/forumdisplay.php?fid=3)
+--- Thread: Screen capture in SDL (Ubuntu)? (/showthread.php?tid=12388)

Screen capture in SDL (Ubuntu)? - Procyon - 07-08-2014 03:38 AM

Hi, I searched around for this for about an hour, but I haven't been able to successfully accomplish this. I even just built the latest version from git tonight, just in case. I have read that F12 is supposed to perform a screen grab, but this doesn't seem to work. Is it only working for the Windows version? I'm running the SDL version on Ubuntu 14.04. I'd really like to get a native screen grab rather than screen capping my OS each time. Is this possible? Am I just missing something? I looked in my ~/.config/ppsspp/psp folder, but there's no sign of a screenshots folder. Just state, savedata, and system. Any help would be appreciated. Thanks very much.

RE: Screen capture in SDL (Ubuntu)? - Procyon - 07-09-2014 11:12 PM

OK well, I got impatient and started grepping around the code to see if I could find my own answer. To my chagrin, it looks like the call to void TakeScreenshot() is only mapped from the Windows version, and the Qt version, making it unavailable from the vanilla SDL build. I was wondering if there was a programmatical reason for this, or if it could be added directly to the SDL code? As it is, I'm having a bitch of a time getting the Qt version to build. I tried to make after qmaking Qt/, but it looks like the dependencies were out of order, so I had to qmake a bunch of the pro files individually and make those before trying the whole project. At the moment, I'm stuck on:

.obj/PPSSPPQt/qrc_desktop_assets.o: In function `qInitResources_desktop_assets()':
qrc_desktop_assets.cpp:(.text+0x0): multiple definition of `qInitResources_desktop_assets()'
.obj/PPSSPPQt/qrc_desktop_assets.o:qrc_desktop_assets.cpp:(.text+0x0): first defined here
.obj/PPSSPPQt/qrc_desktop_assets.o: In function `qCleanupResources_desktop_assets()':
qrc_desktop_assets.cpp:(.text+0x30): multiple definition of `qCleanupResources_desktop_assets()'
.obj/PPSSPPQt/qrc_desktop_assets.o:qrc_desktop_assets.cpp:(.text+0x30): first defined here
.obj/PPSSPPQt/qrc_desktop_assets.o:(.bss+0x0): multiple definition of `qCleanupResources_desktop_assets__dest_instance__'
.obj/PPSSPPQt/qrc_desktop_assets.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status

and qrc_desktop_assets.cpp is a monster of a file that doesn't want to load into my text editor... Sad

Any help would be appreciated. Thanks.

RE: Screen capture in SDL (Ubuntu)? - xsacha - 07-10-2014 05:37 PM

Firstly, the SDL code has no menu system and I can't think of any cross-platform way to have one. So to implement a screenshot mechanism it would need to be hardcoded to a button.

Secondly, you're definitely building Qt the wrong way here. You can't build them separately like that.
That assets file is where all your fonts are so that you don't need heaps of random files spread around like on the SDL version. Everything inside the PPSSPPQt binary file.

First, clean your dir:
~/build/ppsspp/Qt $ rm -rf *.a Makefile* .moc .ui .obj qrc_desktop_assets.cpp

~/build/ppsspp/Qt $ qmake
~/build/ppsspp/Qt $ make -j 4

RE: Screen capture in SDL (Ubuntu)? - Procyon - 07-10-2014 10:33 PM

@xsacha: Thank you very much for you reply, and especially for the rm command. I was trying "make clean" but that clearly wasn't cutting it.

I confess I may be entirely missing something here, but out of curiosity, why can't "Take Snapshot" be implemented in the same fashion that "Toggle Fullscreen" is? I.e. as a map-able button through the in-emu UI? I was able to go through the Controls menu and map Toggle Fullscreen to my spacebar. So if there was an entry for "Take Snapshot", I could map it to F12 or something. The only thing required is what directory to save the snapshots to, but the SDL version already understands to save things in ~/.config/ppsspp/psp, so what's one more folder?

Just wondering. Thanks again for your help.