* Added gtk-gnutella.

* Added a patch to MPlayer to fix the aspect ratio on screens rotated
  with Xrandr.
* Disable toolbus for now because it requires a non-existant package
  (tcltk).

svn path=/nixpkgs/trunk/; revision=5171
This commit is contained in:
Eelco Dolstra 2006-04-18 18:46:36 +00:00
parent ba18de03b9
commit cce11c4f1f
6 changed files with 227 additions and 3 deletions

View File

@ -1,7 +1,8 @@
{ alsaSupport ? false, xvSupport ? true, theoraSupport ? false, cacaSupport ? false { alsaSupport ? false, xvSupport ? true, theoraSupport ? false, cacaSupport ? false
, xineramaSupport ? false , xineramaSupport ? false, randrSupport ? false
, stdenv, fetchurl, x11, freetype, zlib , stdenv, fetchurl, x11, freetype, zlib
, alsa ? null, libXv ? null, libtheora ? null, libcaca ? null, libXinerama ? null , alsa ? null, libXv ? null, libtheora ? null, libcaca ? null
, libXinerama ? null, libXrandr ? null
}: }:
assert alsaSupport -> alsa != null; assert alsaSupport -> alsa != null;
@ -9,6 +10,7 @@ assert xvSupport -> libXv != null;
assert theoraSupport -> libtheora != null; assert theoraSupport -> libtheora != null;
assert cacaSupport -> libcaca != null; assert cacaSupport -> libcaca != null;
assert xineramaSupport -> libXinerama != null; assert xineramaSupport -> libXinerama != null;
assert randrSupport -> libXrandr != null;
stdenv.mkDerivation { stdenv.mkDerivation {
name = "MPlayer-1.0pre7"; name = "MPlayer-1.0pre7";
@ -34,7 +36,13 @@ stdenv.mkDerivation {
(if theoraSupport then libtheora else null) (if theoraSupport then libtheora else null)
(if cacaSupport then libcaca else null) (if cacaSupport then libcaca else null)
(if xineramaSupport then libXinerama else null) (if xineramaSupport then libXinerama else null)
(if randrSupport then libXrandr else null)
]; ];
configureFlags = if cacaSupport then "--enable-caca" else "--disable-caca"; configureFlags = if cacaSupport then "--enable-caca" else "--disable-caca";
# These fix MPlayer's aspect ratio when run in a screen rotated with
# Xrandr.
# See: http://itdp.de/~itdp/html/mplayer-dev-eng/2005-08/msg00427.html
patches = [./mplayer-aspect.patch ./mplayer-pivot.patch];
} }

View File

@ -0,0 +1,76 @@
diff -Nur MPlayer.orig/libvo/aspect.c MPlayer/libvo/aspect.c
--- MPlayer.orig/libvo/aspect.c 2004-10-28 03:15:51.000000000 +0200
+++ MPlayer/libvo/aspect.c 2005-08-24 15:34:14.000000000 +0200
@@ -11,13 +11,16 @@
#include <stdio.h>
#endif
+int vo_physical_width = 0;
+int vo_physical_height = 0;
+
int vo_panscan_x = 0;
int vo_panscan_y = 0;
float vo_panscan_amount = 0;
#include "video_out.h"
-float monitor_aspect=4.0/3.0;
+float monitor_aspect=-1.0f;
extern float movie_aspect;
static struct {
@@ -47,11 +50,24 @@
aspdat.preh = preh;
}
+static void init_monitor_aspect( void )
+{
+ if (monitor_aspect != -1.0f) return;
+ if (vo_physical_width == 0 || vo_physical_height == 0) {
+ // if there's no other indication, assume square pixels
+ vo_physical_width = aspdat.scrw;
+ vo_physical_height = aspdat.scrh;
+ }
+ mp_msg(MSGT_VO,MSGL_V,"\naspect: monitor aspect detected %d:%d\n", vo_physical_width, vo_physical_height);
+ monitor_aspect = 1.0f * vo_physical_width / vo_physical_height;
+}
+
void aspect_save_screenres(int scrw, int scrh){
#ifdef ASPECT_DEBUG
printf("aspect_save_screenres %dx%d \n",scrw,scrh);
#endif
aspdat.scrw = scrw;
aspdat.scrh = scrh;
+ init_monitor_aspect(); // now is a good time
}
/* aspect is called with the source resolution and the
diff -Nur MPlayer.orig/libvo/aspect.h MPlayer/libvo/aspect.h
--- MPlayer.orig/libvo/aspect.h 2002-06-05 21:35:54.000000000 +0200
+++ MPlayer/libvo/aspect.h 2005-08-24 00:08:35.000000000 +0200
@@ -2,6 +2,9 @@
#define __ASPECT_H
/* Stuff for correct aspect scaling. */
+extern int vo_physical_width;
+extern int vo_physical_height;
+
extern int vo_panscan_x;
extern int vo_panscan_y;
extern float vo_panscan_amount;
diff -Nur MPlayer.orig/libvo/x11_common.c MPlayer/libvo/x11_common.c
--- MPlayer.orig/libvo/x11_common.c 2005-08-23 23:07:07.000000000 +0200
+++ MPlayer/libvo/x11_common.c 2005-08-23 23:42:31.000000000 +0200
@@ -464,6 +464,12 @@
if (!vo_screenheight)
vo_screenheight = DisplayHeight(mDisplay, mScreen);
}
+ if (vo_physical_width == 0) {
+ vo_physical_width = DisplayWidthMM(mDisplay, mScreen);
+ }
+ if (vo_physical_height == 0) {
+ vo_physical_height = DisplayHeightMM(mDisplay, mScreen);
+ }
// get color depth (from root window, or the best visual):
XGetWindowAttributes(mDisplay, mRootWin, &attribs);
depth = attribs.depth;

View File

@ -0,0 +1,112 @@
--- MPlayer/configure.orig 2005-08-21 23:47:47.000000000 +0200
+++ MPlayer/configure 2005-08-21 23:55:02.000000000 +0200
@@ -162,6 +162,7 @@
--enable-lircc enable LIRCCD (LIRC client daemon) input [autodetect]
--enable-joystick enable joystick support [disable]
--disable-vm disable support X video mode extensions [autodetect]
+ --disable-randr disable support for X resize and rotate extension [autodetect]
--disable-xf86keysym disable support for 'multimedia' keys [autodetect]
--disable-tv disable TV Interface (tv/dvb grabbers) [enable]
--disable-tv-v4l disable Video4Linux TV Interface support [autodetect]
@@ -252,6 +253,7 @@
--enable-xv build with Xv render support for X 4.x [autodetect]
--enable-xvmc build with XvMC acceleration for X 4.x [disable]
--enable-vm build with XF86VidMode support for X11 [autodetect]
+ --enable-randr build with XRandR support for X11 [autodetect]
--enable-xinerama build with Xinerama support for X11 [autodetect]
--enable-x11 build with X11 render support [autodetect]
--enable-fbdev build with FBDev render support [autodetect]
@@ -1351,6 +1353,7 @@
_mga=auto
_xmga=auto
_vm=auto
+_randr=auto
_xf86keysym=auto
_mlib=auto
_sgiaudio=auto
@@ -1562,6 +1565,8 @@
--disable-xmga) _xmga=no ;;
--enable-vm) _vm=yes ;;
--disable-vm) _vm=no ;;
+ --enable-randr) _randr=yes ;;
+ --disable-randr) _randr=no ;;
--enable-xf86keysym) _xf86keysym=yes ;;
--disable-xf86keysym) _xf86keysym=no ;;
--enable-mlib) _mlib=yes ;;
@@ -3603,6 +3608,25 @@
fi
echores "$_vm"
+# X Resize, Rotate and Reflect extension
+echocheck "Xrandr"
+if test "$_x11" = yes && test "$_randr" = auto; then
+ cat > $TMPC <<EOF
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrandr.h>
+int main(void) { (void) XRRQueryExtension(0, 0, 0); return 0; }
+EOF
+ _randr=no
+ cc_check $_inc_x11 -lXrandr $_ld_x11 && _randr=yes
+fi
+if test "$_randr" = yes ; then
+ _def_randr='#define HAVE_XRANDR 1'
+ _ld_randr='-lXrandr'
+else
+ _def_randr='#undef HAVE_XRANDR'
+fi
+echores "$_randr"
+
# Check for the presence of special keycodes, like audio control buttons
# that XFree86 might have. Used to be bundled with the xf86vm check, but
# has nothing to do with xf86vm and XFree 3.x has xf86vm but does NOT
@@ -6762,7 +6786,7 @@
SLIBSUF=.so
# video output
-X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_xinerama $_ld_x11 $_ld_sock
+X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_randr $_ld_xinerama $_ld_x11 $_ld_sock
GGI_LIB = $_ld_ggi
MLIB_LIB = $_ld_mlib
MLIB_INC = $_inc_mlib
@@ -7465,6 +7489,7 @@
$_def_xv
$_def_xvmc
$_def_vm
+$_def_randr
$_def_xf86keysym
$_def_xinerama
$_def_gl
--- MPlayer/libvo/x11_common.c.orig 2005-08-21 23:56:20.000000000 +0200
+++ MPlayer/libvo/x11_common.c 2005-08-22 00:05:17.000000000 +0200
@@ -39,6 +39,10 @@
#include <X11/extensions/xf86vmode.h>
#endif
+#ifdef HAVE_XRANDR
+#include <X11/extensions/Xrandr.h>
+#endif
+
#ifdef HAVE_XF86XK
#include <X11/XF86keysym.h>
#endif
@@ -434,6 +438,20 @@
int clock;
XF86VidModeGetModeLine(mDisplay, mScreen, &clock, &modeline);
+#ifdef HAVE_XRANDR
+ {
+ Rotation current_rotation;
+
+ XRRRotations(mDisplay, mScreen, &current_rotation);
+ if ((current_rotation&RR_Rotate_90) != 0 ||
+ (current_rotation&RR_Rotate_270) != 0) {
+ unsigned short tmp;
+ tmp = modeline.hdisplay;
+ modeline.hdisplay = modeline.vdisplay;
+ modeline.vdisplay = tmp;
+ }
+ }
+#endif
if (!vo_screenwidth)
vo_screenwidth = modeline.hdisplay;
if (!vo_screenheight)

View File

@ -0,0 +1,9 @@
source $stdenv/setup
configureScript="./Configure"
dontAddPrefix=1
configureFlags="-d -e -D prefix=$out -D gtkversion=2 -D official=true"
genericBuild

View File

@ -0,0 +1,11 @@
{stdenv, fetchurl, pkgconfig, glib, gtk, libxml2}:
stdenv.mkDerivation {
name = "gtk-gnutella-0.96.1";
builder = ./builder.sh;
src = fetchurl {
url = http://surfnet.dl.sourceforge.net/sourceforge/gtk-gnutella/gtk-gnutella-0.96.1.tar.bz2;
md5 = "6529379cc105c1e98f501a67e8e875fd";
};
buildInputs = [pkgconfig glib gtk libxml2];
}

View File

@ -262,6 +262,11 @@ rec {
inherit fetchurl stdenv jdk swt; inherit fetchurl stdenv jdk swt;
}; };
gtkgnutella = (import ../tools/networking/p2p/gtk-gnutella) {
inherit fetchurl stdenv pkgconfig libxml2;
inherit (gtkLibs) glib gtk;
};
dhcp = (import ../tools/networking/dhcp) { dhcp = (import ../tools/networking/dhcp) {
inherit fetchurl stdenv groff nettools coreutils iputils gnused bash; inherit fetchurl stdenv groff nettools coreutils iputils gnused bash;
}; };
@ -2078,12 +2083,13 @@ rec {
MPlayer = (import ../applications/video/MPlayer) { MPlayer = (import ../applications/video/MPlayer) {
inherit fetchurl stdenv freetype x11 zlib libtheora libcaca; inherit fetchurl stdenv freetype x11 zlib libtheora libcaca;
inherit (xlibs) libXv libXinerama; inherit (xlibs) libXv libXinerama libXrandr;
alsaSupport = true; alsaSupport = true;
alsa = alsaLib; alsa = alsaLib;
theoraSupport = true; theoraSupport = true;
cacaSupport = true; cacaSupport = true;
xineramaSupport = true; xineramaSupport = true;
randrSupport = true;
}; };
MPlayerPlugin = (import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in) { MPlayerPlugin = (import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in) {
@ -2399,9 +2405,11 @@ rec {
inherit stdenv fetchurl aterm; inherit stdenv fetchurl aterm;
}; };
/*
toolbus = (import ../development/interpreters/toolbus) { toolbus = (import ../development/interpreters/toolbus) {
inherit stdenv fetchurl atermjava toolbuslib aterm yacc flex; inherit stdenv fetchurl atermjava toolbuslib aterm yacc flex;
}; };
*/
joe = (import ../applications/editors/joe) { joe = (import ../applications/editors/joe) {
inherit stdenv fetchurl; inherit stdenv fetchurl;