diff options
-rw-r--r-- | games-emulation/vbam/Manifest | 1 | ||||
-rw-r--r-- | games-emulation/vbam/files/vbam-2.1.0-performance_fixup.patch | 43 | ||||
-rw-r--r-- | games-emulation/vbam/vbam-2.1.0.ebuild | 96 |
3 files changed, 140 insertions, 0 deletions
diff --git a/games-emulation/vbam/Manifest b/games-emulation/vbam/Manifest index 6376ae4ae7da..03eb7c47000a 100644 --- a/games-emulation/vbam/Manifest +++ b/games-emulation/vbam/Manifest @@ -1 +1,2 @@ DIST vbam-2.0.2.tar.gz 2959204 BLAKE2B 79b288e59a843d2065eac63e74984bf134d9f5dadbc687da245030ad16b138125baab0fe1fb19acac9c117e30b95e57f1880b43817f75361600fb62efd1d5272 SHA512 9aafb8ef307fbbfbc5ae6dc35bc3042934e25a30069a71949e4c8e777fd862d94ec60c189823f4acdea4cb1338098fa85a55e090fa6023c07368cbb7638dd910 +DIST vbam-2.1.0.tar.gz 2977888 BLAKE2B 48884b10d13cdeddfae1dc5a94a4576ebfd7aab263225650a7d4f7138854da3c8bbffa4a8f08e9da001cd967f0e85a7beb82f86350031264a66bfdd5403d36dd SHA512 e4489c84880a7a70e7e94104ffbbdd805e9f15d5c962c0c13a7470496d2fdad8e21c1ddb161b776eb0b1a0c7583182df5838da5a523ce31dac620aa2a7842321 diff --git a/games-emulation/vbam/files/vbam-2.1.0-performance_fixup.patch b/games-emulation/vbam/files/vbam-2.1.0-performance_fixup.patch new file mode 100644 index 000000000000..c99f829bdc08 --- /dev/null +++ b/games-emulation/vbam/files/vbam-2.1.0-performance_fixup.patch @@ -0,0 +1,43 @@ +From a8d0508cf299a58b2a659d6017b049db121de8ba Mon Sep 17 00:00:00 2001 +From: Rafael Kitover <rkitover@gmail.com> +Date: Mon, 2 Jul 2018 18:32:18 -0700 +Subject: [PATCH] use GetWindow()->Refresh() in Wayland only + +Some people are reporting stuttering, and @retro-wertz tested both +DrawArea() and Refresh() on wxgtk3 under xorg and found that the +Refresh() method produces more stuttering. + +Change the compile check for wxgtk2 to a runtime check for wayland, and +use Refresh() under Wayland only. +--- + src/wx/panel.cpp | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/src/wx/panel.cpp b/src/wx/panel.cpp +index e4b86301..faaf6e4d 100644 +--- a/src/wx/panel.cpp ++++ b/src/wx/panel.cpp +@@ -1817,19 +1817,16 @@ void DrawingPanelBase::DrawArea(uint8_t** data) + } + + // next, draw the frame (queue a PaintEv) Refresh must be used under +- // Wayland or nothing is drawn, however it causes high CPU usage with GTK2, +- // so use the old method in that case +-#if !defined(__WXGTK__) || defined(__WXGTK3__) +- GetWindow()->Refresh(); +-#else +- { ++ // Wayland or nothing is drawn. ++ if (wxGetApp().UsingWayland()) ++ GetWindow()->Refresh(); ++ else { + DrawingPanelBase* panel = wxGetApp().frame->GetPanel()->panel; + if (panel) { + wxClientDC dc(panel->GetWindow()); + panel->DrawArea(dc); + } + } +-#endif + + // finally, draw on-screen text using wx method, if possible + // this method flickers too much right now diff --git a/games-emulation/vbam/vbam-2.1.0.ebuild b/games-emulation/vbam/vbam-2.1.0.ebuild new file mode 100644 index 000000000000..3d0c2496b2e0 --- /dev/null +++ b/games-emulation/vbam/vbam-2.1.0.ebuild @@ -0,0 +1,96 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +WX_GTK_VER="3.0-gtk3" +inherit gnome2-utils wxwidgets xdg-utils cmake-utils + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://github.com/visualboyadvance-m/visualboyadvance-m.git" + inherit git-r3 +else + SRC_URI="https://github.com/visualboyadvance-m/visualboyadvance-m/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~x86" + S="${WORKDIR}/visualboyadvance-m-${PV}" +fi + +DESCRIPTION="Game Boy, GBC, and GBA emulator forked from VisualBoyAdvance" +HOMEPAGE="https://github.com/visualboyadvance-m/visualboyadvance-m" + +LICENSE="GPL-2" +SLOT="0" +IUSE="ffmpeg link lirc nls openal +sdl wxwidgets" +REQUIRED_USE="openal? ( wxwidgets ) || ( sdl wxwidgets )" + +RDEPEND=" + >=media-libs/libpng-1.4:0= + media-libs/libsdl2[joystick] + link? ( >=media-libs/libsfml-2.0:= ) + sys-libs/zlib:= + virtual/glu + virtual/opengl + ffmpeg? ( =media-video/ffmpeg-3*:= ) + lirc? ( app-misc/lirc ) + nls? ( virtual/libintl ) + wxwidgets? ( + openal? ( media-libs/openal ) + x11-libs/wxGTK:${WX_GTK_VER}[X,opengl] + )" +DEPEND="${RDEPEND} + app-arch/zip + wxwidgets? ( virtual/imagemagick-tools ) + x86? ( || ( dev-lang/nasm dev-lang/yasm ) ) + nls? ( sys-devel/gettext ) + virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${P}-performance_fixup.patch" +) + +src_configure() { + use wxwidgets && setup-wxwidgets + local mycmakeargs=( + -DENABLE_FFMPEG=$(usex ffmpeg) + -DENABLE_LINK=$(usex link) + -DENABLE_LIRC=$(usex lirc) + -DENABLE_NLS=$(usex nls) + -DENABLE_OPENAL=$(usex openal) + -DENABLE_SDL=$(usex sdl) + -DENABLE_WX=$(usex wxwidgets) + -DENABLE_ASM_CORE=$(usex x86) + -DENABLE_ASM_SCALERS=$(usex x86) + -DCMAKE_SKIP_RPATH=ON + ) + cmake-utils_src_configure +} + +src_install() { + cmake-utils_src_install + + if use sdl ; then + dodoc doc/ReadMe.SDL.txt + doman src/debian/vbam.6 + fi + use wxwidgets && doman src/debian/visualboyadvance-m.6 +} + +pkg_preinst() { + if use wxwidgets ; then + gnome2_icon_savelist + fi +} + +pkg_postinst() { + if use wxwidgets ; then + gnome2_icon_cache_update + xdg_desktop_database_update + fi +} + +pkg_postrm() { + if use wxwidgets ; then + gnome2_icon_cache_update + xdg_desktop_database_update + fi +} |