diff options
author | Peter Volkov <pva@gentoo.org> | 2006-07-18 13:12:37 +0000 |
---|---|---|
committer | Peter Volkov <pva@gentoo.org> | 2006-07-18 13:12:37 +0000 |
commit | faf9489ccf54b1014e8e8da062cb09ca39902eb2 (patch) | |
tree | 8bb5f6aed0d92a44c86533cf8ee71ee0909aadf9 | |
parent | Stable on amd64 and x86 wrt bug #140584. (diff) | |
download | gentoo-2-faf9489ccf54b1014e8e8da062cb09ca39902eb2.tar.gz gentoo-2-faf9489ccf54b1014e8e8da062cb09ca39902eb2.tar.bz2 gentoo-2-faf9489ccf54b1014e8e8da062cb09ca39902eb2.zip |
Fix for bug 95430. Thank Joël for report and upstream developer Richard Drummond for the patch.
(Portage version: 2.1-r1)
-rw-r--r-- | app-emulation/e-uae/ChangeLog | 9 | ||||
-rw-r--r-- | app-emulation/e-uae/e-uae-0.8.28-r3.ebuild | 129 | ||||
-rw-r--r-- | app-emulation/e-uae/files/digest-e-uae-0.8.28-r3 | 3 | ||||
-rw-r--r-- | app-emulation/e-uae/files/e-uae-0.8.28-themes_rendering_fix.diff | 215 |
4 files changed, 355 insertions, 1 deletions
diff --git a/app-emulation/e-uae/ChangeLog b/app-emulation/e-uae/ChangeLog index 50777e3cd331..7d357f9f60ac 100644 --- a/app-emulation/e-uae/ChangeLog +++ b/app-emulation/e-uae/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-emulation/e-uae # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.14 2006/07/17 11:18:05 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.15 2006/07/18 13:12:37 pva Exp $ + +*e-uae-0.8.28-r3 (18 Jul 2006) + + 18 Jul 2006; Peter Volkov <pva@gentoo.org> + +files/e-uae-0.8.28-themes_rendering_fix.diff, +e-uae-0.8.28-r3.ebuild: + Fix for bug 95430. Thank Joël for report and upstream developer + Richard Drummond for the patch. 17 Jul 2006; Peter Volkov <pva@gentoo.org> e-uae-0.8.28-r1.ebuild, e-uae-0.8.28-r2.ebuild: diff --git a/app-emulation/e-uae/e-uae-0.8.28-r3.ebuild b/app-emulation/e-uae/e-uae-0.8.28-r3.ebuild new file mode 100644 index 000000000000..d8ab2b2f4c5f --- /dev/null +++ b/app-emulation/e-uae/e-uae-0.8.28-r3.ebuild @@ -0,0 +1,129 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/e-uae-0.8.28-r3.ebuild,v 1.1 2006/07/18 13:12:37 pva Exp $ + +inherit eutils flag-o-matic + +DESCRIPTION="The Ubiquitous Amiga Emulator with an emulation core largely based on WinUAE" +HOMEPAGE="http://www.rcdrummond.net/uae/" +SRC_URI="http://www.rcdrummond.net/uae/${P}/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="X dga ncurses sdl gtk alsa oss sdl-sound capslib" + +# Note: opposed to ./configure --help zlib support required! Check +# src/Makefile.am that includes zfile.c unconditionaly. +RDEPEND="X? ( || ( ( x11-libs/libXt + x11-libs/libxkbfile + x11-libs/libXext + dga? ( x11-libs/libXxf86dga + x11-libs/libXxf86vm ) + ) + virtual/x11 + ) + ) + !X? ( sdl? ( media-libs/libsdl ) + !sdl? ( sys-libs/ncurses ) ) + alsa? ( media-libs/alsa-lib ) + !alsa? ( sdl-sound? ( media-libs/sdl-sound ) ) + gtk? ( >=x11-libs/gtk+-2.0 ) + capslib? ( games-emulation/caps ) + sys-libs/zlib + app-cdr/cdrtools" + +DEPEND="$RDEPEND + X? ( dga? ( x11-proto/xf86vidmodeproto + x11-proto/xf86dgaproto ) )" + +pkg_setup() { + # Sound setup. + if use alsa; then + elog "Choosing alsa as sound target to use." + myconf="--with-alsa --without-sdl-sound" + elif use sdl-sound ; then + if ! use sdl ; then + ewarn "sdl-sound is not enabled because sdl is switched off. Leaving" + ewarn "sound on oss autodetection." + myconf="--without-alsa --without-sdl-sound" + ebeep + else + elog "Choosing sdl-sound as sound target to use." + myconf="--without-alsa --with-sdl-sound" + fi + elif use oss ; then + elog "Choosing oss as sound target to use." + ewarn "oss will be autodetected. See output of configure." + myconf="--without-alsa --without-sdl-sound" + else + ewarn "There is no alsa, sdl-sound or oss in USE. Sound target disabled!" + myconf="--disable-audio" + fi + + # VIDEO setup. X is autodetected (there is no --with-X option). + if use X ; then + elog "Using X11 for video output." + myconf="$myconf --without-curses --without-sdl-gfx" + use dga && myconf="$myconf --enable-dga --enable-vidmode" + elif use sdl ; then + elog "Using sdl for video output." + myconf="$myconf --with-sdl --with-sdl-gfx --without-curses" + elif use ncurses; then + elog "Using ncurses for video output." + myconf="$myconf --with-curses --without-sdl-gfx" + else + ewarn "There is no X or sdl or ncurses in USE!" + ewarn "Following upstream falling back on ncurses." + myconf="$myconf --with-curses --without-sdl-gfx" + ebeep + fi + + use gtk && myconf="$myconf --enable-ui --enable-threads" + use gtk || myconf="$myconf --disable-ui" + + use capslib && myconf="$myconf --with-caps" + + myconf="$myconf --with-zlib" + + # And explicitly state defaults: + myconf="$myconf --enable-aga" + myconf="$myconf --enable-autoconfig --enable-scsi-device --enable-cdtv --enable-cd32" + myconf="$myconf --enable-bsdsock" +} + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}/${P}-shm-crash.patch" + epatch "${FILESDIR}/${P}-fix-joystick-conflicts.patch" + epatch "${FILESDIR}/${P}-fix-atoscroll-screen-support.patch" + epatch "${FILESDIR}/${P}-fix-JIT-cache-on-NX-cpu.patch" + epatch "${FILESDIR}/${P}-gtkui_64bit_fix.diff" + epatch "${FILESDIR}/${P}-themes_rendering_fix.diff" +} + +src_compile() { + strip-flags + + econf ${myconf} \ + --with-libscg-includedir=/usr/include/scsilib \ + || die "./configure failed" + + emake -j1 || die "emake failed" +} + +src_install() { + make DESTDIR="${D}" install || die "make install failed" + + insinto /usr/share/uae/amiga-tools + doins amiga/{*hack,trans*,uae*,*.library} + + # Rename it to e-uae + mv "${D}/usr/bin/uae" "${D}/usr/bin/e-uae" + mv "${D}/usr/bin/readdisk" "${D}/usr/bin/e-readdisk" + mv "${D}/usr/share/uae" "${D}/usr/share/${PN}" + + dodoc docs/* README ChangeLog CHANGES +} diff --git a/app-emulation/e-uae/files/digest-e-uae-0.8.28-r3 b/app-emulation/e-uae/files/digest-e-uae-0.8.28-r3 new file mode 100644 index 000000000000..f73743e1c92c --- /dev/null +++ b/app-emulation/e-uae/files/digest-e-uae-0.8.28-r3 @@ -0,0 +1,3 @@ +MD5 9fc186f9256d04f940304044e29175ef e-uae-0.8.28.tar.bz2 1148790 +RMD160 7e9fa21fa14b0ca3a32a28ccb236b9d7628a7f69 e-uae-0.8.28.tar.bz2 1148790 +SHA256 afc8b30fb9aa0819a4e53b3eb0db8e658e5a2b23d7dbf436f6b5a49b2269da86 e-uae-0.8.28.tar.bz2 1148790 diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-themes_rendering_fix.diff b/app-emulation/e-uae/files/e-uae-0.8.28-themes_rendering_fix.diff new file mode 100644 index 000000000000..4c8eae83d68c --- /dev/null +++ b/app-emulation/e-uae/files/e-uae-0.8.28-themes_rendering_fix.diff @@ -0,0 +1,215 @@ +diff -Naur e-uae-0.8.28.orig/src/gui-gtk/led.c e-uae-0.8.28/src/gui-gtk/led.c +--- e-uae-0.8.28.orig/src/gui-gtk/led.c 2004-06-15 01:14:49.000000000 +0400 ++++ e-uae-0.8.28/src/gui-gtk/led.c 2006-07-18 17:01:48.000000000 +0400 +@@ -1,15 +1,17 @@ +-/* +- * led.c +- * +- * Copyright 2004 Martin Garton +- */ ++ /* ++ * E-UAE - The portable Amiga Emulator ++ * ++ * Custom Gtk+ LED widget ++ * ++ * Copyright 2004 Martin Garton ++ * Copyright 2006 Richard Drummond ++ */ + + #include <sys/types.h> + #include <sys/stat.h> + #include <unistd.h> + #include <string.h> + +-#include <gdk/gdkkeysyms.h> + #include <gtk/gtk.h> + + #include "led.h" +@@ -21,14 +23,19 @@ + static void led_class_init (LedClass *class); + static gint led_expose (GtkWidget *w, GdkEventExpose *event); + static void led_destroy (GtkObject *object); ++static void led_realize (GtkWidget *widget); ++static void led_unrealize (GtkWidget *widget); ++static void led_size_request (GtkWidget *widget, GtkRequisition *requisition); ++static void led_size_allocate (GtkWidget *widget, GtkAllocation *allocation); ++ + + guint led_get_type () + { + static guint led_type = 0; + + if (!led_type) { +- GtkTypeInfo led_info = { +- "Led", ++ static const GtkTypeInfo led_info = { ++ (char *) "Led", + sizeof (Led), + sizeof (LedClass), + (GtkClassInitFunc) led_class_init, +@@ -48,39 +55,102 @@ + { + GtkObjectClass *object_class = (GtkObjectClass *) class; + GtkWidgetClass *widget_class = (GtkWidgetClass *) class; +- parent_class = gtk_type_class (gtk_object_get_type ()); ++ parent_class = gtk_type_class (gtk_widget_get_type ()); + + object_class->destroy = led_destroy; + widget_class->expose_event = led_expose; ++ widget_class->realize = led_realize; ++ widget_class->unrealize = led_unrealize; ++ widget_class->size_request = led_size_request; ++ widget_class->size_allocate = led_size_allocate; + } + + static void led_init (Led *theled) + { + theled->color = LED_OFF; +- +- GTK_WIDGET (theled)->requisition.width = LED_W + GTK_MISC (theled)->xpad * 2; +- GTK_WIDGET (theled)->requisition.height = LED_H + GTK_MISC (theled)->ypad * 2; + } + +- + GtkWidget *led_new (void) + { + return gtk_type_new (led_get_type ()); + } + +- + static gint led_expose (GtkWidget *w, GdkEventExpose *event) + { + if (w && GTK_WIDGET_DRAWABLE (w)) { +- GtkStyle *style = gtk_style_copy (w->style); +- style->bg[GTK_STATE_NORMAL] = LED (w)->color; +- gtk_style_attach (style, w->window); +- gtk_draw_flat_box (style, w->window, GTK_STATE_NORMAL, GTK_SHADOW_NONE, +- 0, 0, LED_W, LED_H); ++ Led *theled = LED (w); ++ gdk_draw_rectangle (w->window, theled->gc, TRUE, 0, 0, ++ w->allocation.width, w->allocation.height); + } + return 0; + } + ++static void led_realize (GtkWidget *widget) ++{ ++ Led *theled; ++ GdkWindowAttr attributes; ++ gint attributes_mask; ++ ++ g_return_if_fail (widget != NULL); ++ g_return_if_fail (IS_LED (widget)); ++ ++ GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); ++ theled = LED (widget); ++ ++ attributes.x = widget->allocation.x; ++ attributes.y = widget->allocation.y; ++ attributes.width = widget->allocation.width; ++ attributes.height = widget->allocation.height; ++ attributes.wclass = GDK_INPUT_OUTPUT; ++ attributes.window_type = GDK_WINDOW_CHILD; ++ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; ++ attributes.visual = gtk_widget_get_visual (widget); ++ attributes.colormap = gtk_widget_get_colormap (widget); ++ ++ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; ++ widget->window = gdk_window_new (widget->parent->window, &attributes, attributes_mask); ++ ++ gdk_window_set_user_data (widget->window, widget); ++ ++ theled->gc = gdk_gc_new (widget->window); ++ gdk_gc_set_rgb_fg_color (theled->gc, &theled->color); ++ ++ led_expose (widget, NULL); ++} ++ ++static void led_unrealize (GtkWidget *widget) ++{ ++ Led *theled = LED (widget); ++ ++ g_object_unref (theled->gc); ++ theled->gc = NULL; ++ ++ GTK_WIDGET_CLASS (parent_class)->unrealize (widget); ++} ++ ++static void led_size_request (GtkWidget *widget, GtkRequisition *requisition) ++{ ++ requisition->width = LED_W; ++ requisition->height = LED_H; ++} ++ ++static void led_size_allocate (GtkWidget *widget, GtkAllocation *allocation) ++{ ++ Led *theled = LED (widget); ++ ++ g_return_if_fail (widget != NULL); ++ g_return_if_fail (IS_LED (widget)); ++ g_return_if_fail (allocation != NULL); ++ ++ widget->allocation = *allocation; ++ ++ if (GTK_WIDGET_REALIZED (widget)) { ++ gdk_window_move_resize (widget->window, ++ allocation->x, allocation->y, ++ allocation->width, allocation->height); ++ } ++} ++ + static void led_destroy (GtkObject *o) + { + g_return_if_fail (o != NULL); +@@ -95,6 +165,8 @@ + { + l->color = col; + +- if (GTK_WIDGET_DRAWABLE (l)) ++ if (GTK_WIDGET_REALIZED (l)) { ++ gdk_gc_set_rgb_fg_color (l->gc, &l->color); + led_expose (GTK_WIDGET (l), NULL); ++ } + } +diff -Naur e-uae-0.8.28.orig/src/gui-gtk/led.h e-uae-0.8.28/src/gui-gtk/led.h +--- e-uae-0.8.28.orig/src/gui-gtk/led.h 2004-05-20 00:56:23.000000000 +0400 ++++ e-uae-0.8.28/src/gui-gtk/led.h 2006-07-18 17:01:42.000000000 +0400 +@@ -1,10 +1,16 @@ +-/* led.h */ ++ /* ++ * E-UAE - The portable Amiga Emulator ++ * ++ * Custom Gtk+ LED widget ++ * ++ * Copyright 2004 Martin Garton ++ * Copyright 2006 Richard Drummond ++ */ + + #ifndef __LED_H__ + #define __LED_H__ + + #include <gdk/gdk.h> +-#include <gtk/gtkmisc.h> + + #ifdef __cplusplus + extern "C" { +@@ -21,15 +27,15 @@ + + struct _Led + { +- GtkMisc widget; +- GdkColor color; ++ GtkWidget widget; ++ ++ GdkGC *gc; ++ GdkColor color; + }; + + struct _LedClass + { + GtkWidgetClass parent_class; +- +- //void (* led) (Led *led ); + }; + + guint led_get_type (void); |