wok-6.x rev 13542

sudo-pam: fix (by xj); wine-rt: add (by xj); qjackctl: up 0.3.9
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Oct 30 04:33:32 2012 +0000 (2012-10-30)
parents 67ed620748b8
children d53ecda155fa
files qjackctl/receipt sudo-pam/receipt sudo-pam/stuff/sudo wine-rt/receipt wine-rt/stuff/applications/notepad.desktop wine-rt/stuff/applications/winecfg.desktop wine-rt/stuff/applications/winefile.desktop wine-rt/stuff/wine-rt-101107.patch wine-rt/stuff/wine.png
line diff
     1.1 --- a/qjackctl/receipt	Mon Oct 29 13:27:29 2012 +0000
     1.2 +++ b/qjackctl/receipt	Tue Oct 30 04:33:32 2012 +0000
     1.3 @@ -1,36 +1,36 @@
     1.4  # SliTaz package receipt.
     1.5  
     1.6  PACKAGE="qjackctl"
     1.7 -VERSION="0.3.6"
     1.8 +VERSION="0.3.9"
     1.9  CATEGORY="multimedia"
    1.10  SHORT_DESC="Application to Control Jack"
    1.11  MAINTAINER="allan316@gmail.com"
    1.12 -BUILD_DEPENDS="qmake Qt4-dev jack-audio-connection-kit jack-audio-connection-kit-dev xorg-xproto xorg-libX11-dev"
    1.13 -DEPENDS="jack-audio-connection-kit libQtCore libQtGui libQtXml alsa-lib \
    1.14 -expat fontconfig freetype glib xorg-libICE xorg-libSM xorg-libX11 \
    1.15 -xorg-libXau xorg-libXdmcp xorg-libXext xorg-libXi xorg-libXrandr \
    1.16 -xorg-libXrender zlib libpng"
    1.17 +WEB_SITE="http://qjackctl.sourceforge.net"
    1.18  TARBALL="$PACKAGE-$VERSION.tar.gz"
    1.19 -WEB_SITE="http://qjackctl.sourceforge.net"
    1.20  WGET_URL="http://nchc.dl.sourceforge.net/sourceforge/qjackctl/$TARBALL"
    1.21 +
    1.22 +DEPENDS="alsa-lib bzlib expat fontconfig freetype gcc-lib-base glib \
    1.23 +glibc-base jack-audio-connection-kit libffi libpng libQtCore libQtDBus \
    1.24 +libQtGui libQtXml libxcb util-linux-ng-uuid xorg-libICE xorg-libSM \
    1.25 +xorg-libX11 xorg-libXau xorg-libXdmcp xorg-libXext xorg-libXrender zlib"
    1.26 +BUILD_DEPENDS="qmake Qt4-dev jack-audio-connection-kit \
    1.27 +jack-audio-connection-kit-dev xorg-xproto xorg-libX11-dev"
    1.28  TAGS="audio sound"
    1.29  
    1.30  # Rules to configure and make the package.
    1.31  compile_rules()
    1.32  {
    1.33  	cd $src
    1.34 -	sed -i 's|^LIBS.*|& -Wl,--copy-dt-needed-entries -lX11|' qjackctl.pro.in
    1.35 -	./configure --prefix=/usr --infodir=/usr/share/info \
    1.36 -	--mandir=/usr/share/man $CONFIGURE_ARGS &&
    1.37 -	make -j1 &&
    1.38 -	make -j1 DESTDIR=$PWD/_pkg install
    1.39 +	#sed -i 's|^LIBS.*|& -Wl,--copy-dt-needed-entries -lX11|' qjackctl.pro.in
    1.40 +	./configure $CONFIGURE_ARGS &&
    1.41 +	make &&
    1.42 +	make DESTDIR=$PWD/_pkg install
    1.43  }
    1.44  
    1.45  # Rules to gen a SliTaz package suitable for Tazpkg.
    1.46  genpkg_rules()
    1.47  {
    1.48 -	mkdir -p $fs/usr
    1.49 -	cp -a $_pkg/usr/bin $fs/usr
    1.50 -	cp -a $_pkg/usr/share $fs/usr
    1.51 +	cp -a $_pkg/usr $fs
    1.52 +	#rm -rf $fs/usr/share/man
    1.53  }
    1.54  
     2.1 --- a/sudo-pam/receipt	Mon Oct 29 13:27:29 2012 +0000
     2.2 +++ b/sudo-pam/receipt	Tue Oct 30 04:33:32 2012 +0000
     2.3 @@ -1,7 +1,7 @@
     2.4  # SliTaz package receipt.
     2.5  
     2.6  PACKAGE="sudo-pam"
     2.7 -VERSION="1.8.4"
     2.8 +VERSION="1.8.6p3"
     2.9  CATEGORY="security"
    2.10  SHORT_DESC="Sudo (su \"do\") allows a system administrator to delegate authority using PAM."
    2.11  MAINTAINER="erjo@slitaz.org"
    2.12 @@ -31,12 +31,12 @@
    2.13  genpkg_rules()
    2.14  {
    2.15  	mkdir -p $fs/usr/lib
    2.16 -	mkdir -p $fs/etc
    2.17 +	mkdir -p $fs/etc/pam.d
    2.18  	cp -a $_pkg/usr/bin $fs/usr
    2.19  	cp -a $_pkg/usr/sbin $fs/usr
    2.20 +	cp -a $_pkg/etc/sudoers $fs/etc/
    2.21 +	cp -a $stuff/sudo $fs/etc/pam.d/
    2.22  	cp -a $_pkg/usr/lib/*.so $fs/usr/lib
    2.23 -	cp -a $WOK/sudo/stuff/sudoers $fs/etc
    2.24 -	cp -a $stuff/* $fs
    2.25  }
    2.26  
    2.27  pre_install()
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/sudo-pam/stuff/sudo	Tue Oct 30 04:33:32 2012 +0000
     3.3 @@ -0,0 +1,7 @@
     3.4 +#%PAM-1.0
     3.5 +# specify the PAM fallback behaviour
     3.6 +
     3.7 +auth	required	pam_unix.so
     3.8 +account	required	pam_unix.so
     3.9 +password	required	pam_unix.so md5
    3.10 +session	required	pam_limits.so
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/wine-rt/receipt	Tue Oct 30 04:33:32 2012 +0000
     4.3 @@ -0,0 +1,66 @@
     4.4 +# SliTaz package receipt.
     4.5 +
     4.6 +PACKAGE="wine-rt"
     4.7 +VERSION="1.5.15"
     4.8 +CATEGORY="misc"
     4.9 +SHORT_DESC="Windows API for Linux."
    4.10 +MAINTAINER="xj@wp.pl"
    4.11 +TARBALL="${PACKAGE%-rt}-$VERSION.tar.bz2"
    4.12 +WEB_SITE="http://www.winehq.org/"
    4.13 +WGET_URL="$SF_MIRROR/${PACKAGE%-rt}/$TARBALL"
    4.14 +TAGS="windows"
    4.15 +PROVIDE="wine"
    4.16 +
    4.17 +DEPENDS="alsa-lib libxml2 libxslt mesa libglu-mesa xorg-dev lcms freetype"
    4.18 +BUILD_DEPENDS="alsa-lib-dev flex bison mesa-dev freetype-dev libtool \
    4.19 +libxml2-dev libxslt-dev lcms-dev"
    4.20 +
    4.21 +# Rules to configure and make the package.
    4.22 +compile_rules()
    4.23 +{
    4.24 +	cd $src
    4.25 +	patch -s -Np1 -i $stuff/wine-rt-101107.patch
    4.26 +	
    4.27 +CONFIGURE_ARGS='
    4.28 +  --prefix=/usr 
    4.29 +  --disable-tests
    4.30 +  --without-capi
    4.31 +  --without-cms
    4.32 +  --without-coreaudio
    4.33 +  --without-cups
    4.34 +  --without-gphoto
    4.35 +  --without-gnutls
    4.36 +  --without-gsm
    4.37 +  --without-ldap
    4.38 +  --without-mpg123
    4.39 +  --without-openal
    4.40 +  --without-opencl
    4.41 +  --without-openssl
    4.42 +  --without-oss
    4.43 +  --without-sane
    4.44 +  --without-v4l
    4.45 +  --disable-win16
    4.46 +  --with-x
    4.47 +'
    4.48 +  CFLAGS="$CFLAGS -O2 -funroll-loops -frounding-math -mfpmath=sse -msse2 \
    4.49 +     -fsignaling-nans -pipe"
    4.50 +	
    4.51 +  ./configure $CONFIGURE_ARGS &&
    4.52 +  make $MAKEFLAGS && make install
    4.53 +}
    4.54 +
    4.55 +# Rules to gen a SliTaz package suitable for Tazpkg.
    4.56 +genpkg_rules()
    4.57 +{
    4.58 +	mkdir -p $fs/usr/lib/wine $fs/usr/share
    4.59 +	cp -a $install/usr/bin $fs/usr
    4.60 +	cp -a $install/usr/share/wine $fs/usr/share
    4.61 +	cp -a $install/usr/share/applications $fs/usr/share
    4.62 +	cp -a $install/usr/lib/lib* $fs/usr/lib
    4.63 +	cp -a $install/usr/lib/wine/*.so $fs/usr/lib/wine
    4.64 +}
    4.65 +
    4.66 +post_install()
    4.67 +{
    4.68 +	modprobe snd-seq 2>/dev/null
    4.69 +}
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/wine-rt/stuff/applications/notepad.desktop	Tue Oct 30 04:33:32 2012 +0000
     5.3 @@ -0,0 +1,11 @@
     5.4 +[Desktop Entry]
     5.5 +Encoding=UTF-8
     5.6 +Name=Wine Notepad
     5.7 +Name[fr]=Bloc-notes Wine
     5.8 +Name[ru]=Блокнот Wine
     5.9 +Exec=notepad %f
    5.10 +Icon=accessories-text-editor
    5.11 +Terminal=false
    5.12 +Type=Application
    5.13 +MimeType=text/plain
    5.14 +Categories=Utility;TextEditor;
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/wine-rt/stuff/applications/winecfg.desktop	Tue Oct 30 04:33:32 2012 +0000
     6.3 @@ -0,0 +1,11 @@
     6.4 +[Desktop Entry]
     6.5 +Encoding=UTF-8
     6.6 +Name=Wine Configuration
     6.7 +Name[fr]=Configuration de Wine
     6.8 +Name[ru]=Параметры Wine
     6.9 +Exec=winecfg
    6.10 +Icon=wine
    6.11 +Terminal=false
    6.12 +Type=Application
    6.13 +MimeType=text/plain
    6.14 +Categories=System
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/wine-rt/stuff/applications/winefile.desktop	Tue Oct 30 04:33:32 2012 +0000
     7.3 @@ -0,0 +1,11 @@
     7.4 +[Desktop Entry]
     7.5 +Encoding=UTF-8
     7.6 +Name=Wine File Manager
     7.7 +Name[fr]=Gestionnaire de fichiers Wine
     7.8 +Name[ru]=Проводник Wine
     7.9 +Exec=winefile %f
    7.10 +Icon=file-manager
    7.11 +Terminal=false
    7.12 +Type=Application
    7.13 +MimeType=text/plain
    7.14 +Categories=System
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/wine-rt/stuff/wine-rt-101107.patch	Tue Oct 30 04:33:32 2012 +0000
     8.3 @@ -0,0 +1,264 @@
     8.4 +From 1dceb627db51a239a63ed5276f7e8911be6751bc Mon Sep 17 00:00:00 2001
     8.5 +From: Joakim B Hernberg <jhernberg@alchemy.lu>
     8.6 +Date: Sun, 7 Nov 2010 19:10:49 +0100
     8.7 +Subject: [PATCH] 3:rd wine-rt patch 101107
     8.8 +
     8.9 +---
    8.10 + README.WINE-RT  |   27 +++++++++++++++++
    8.11 + server/main.c   |   60 ++++++++++++++++++++++++++++++++++++++
    8.12 + server/thread.c |   87 ++++++++++++++++++++++++++++++++++++++++++------------
    8.13 + 3 files changed, 154 insertions(+), 20 deletions(-)
    8.14 + create mode 100644 README.WINE-RT
    8.15 +
    8.16 +diff --git a/README.WINE-RT b/README.WINE-RT
    8.17 +new file mode 100644
    8.18 +index 0000000..3f3f2c1
    8.19 +--- /dev/null
    8.20 ++++ b/README.WINE-RT
    8.21 +@@ -0,0 +1,27 @@
    8.22 ++What is it?
    8.23 ++The Wine-RT patch allows programs that use windows' concept of thread priority to gain similar functionality under linux.  It maps windows priority levels to linux scheduling policies.  THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_HIGHEST and THREAD_PRIORITY_TIME_CRITICAL levels which are made to run as linux SCHED_FIFO threads at priority levels that are defined by the WINERT variable.  THREAD_PRIORITY_NORMAL threads are run as normal linux threads (as all threads are without the patch), and the priorities below normal (THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_LOWEST) are run as SCHED_BATCH.  THREAD_PRIORITY_IDLE threads are run as SCHED_IDLE.
    8.24 ++Windows' concept of priority classes is not implemented at all.
    8.25 ++
    8.26 ++Please note that threads running SCHED_FIFO might hang your entire system, so please exercise caution! 
    8.27 ++
    8.28 ++How does it work?
    8.29 ++When a windows program asks for a thread to be run at a higher priority, Wine will ask the linux system to schedule it as a SCHED_FIFO thread, which means that the tread will keep on executing until it has either finished, voluntarily yields execution or gets preempted by a higher priority SCHED_FIFO thread.  This is already done by many linux audio applications, to ensure less xruns on lower buffer sizes.  With Wine-RT, the same thing can be done for Wine applications.
    8.30 ++ 
    8.31 ++How to use it?
    8.32 ++The Wine-RT functionality is not enabled by default. Instead it is controlled by 2 environment variables "WINE_RT" and "WINE_SRV_RT".
    8.33 ++
    8.34 ++The "WINE_RT" variable has 2 purposes, it has to be set in order to activate the patch, and it determines the priority of the SCHED_FIFO threads, Its value can be set from 1 to your system's rtprio max value minus 10, as set in limits.conf or limits.d/audio.conf. (In Debian, Ubuntu and KXStudio this value is 99). THREAD_PRIORITY_ABOVE_NORMAL threads will run at this  priority level, THREAD_PRIORITY_HIGHEST threads at this level + 5, and THREAD_PRIORITY_TIME_CRITICAL threads at this level + 10.
    8.35 ++
    8.36 ++WINE_SRV_RT makes the wineserver main thread run SCHED_FIFO.  Valid values range from 1 to your system's rtprio max value.
    8.37 ++
    8.38 ++We can set these variables in 2 simple ways.
    8.39 ++First one is using a terminal with "exports", like this:
    8.40 ++export WINE_RT=#
    8.41 ++export WINE_SRV_RT=#
    8.42 ++wine <app>
    8.43 ++
    8.44 ++or just prefix your application with 'env VARIABLE=value', like this:
    8.45 ++env WINE_RT=# WINE_SRV_RT=# wine <app>
    8.46 ++
    8.47 ++A recommended starting point might be "env WINE_RT=15 WINE_SRV_RT=10 wine appname.exe".
    8.48 ++
    8.49 +diff --git a/server/main.c b/server/main.c
    8.50 +index 2d841e8..a89d1e0 100644
    8.51 +--- a/server/main.c
    8.52 ++++ b/server/main.c
    8.53 +@@ -27,10 +27,18 @@
    8.54 + #include <stdio.h>
    8.55 + #include <stdlib.h>
    8.56 + #include <sys/time.h>
    8.57 ++#include <sys/resource.h>
    8.58 ++#include <sys/mman.h>
    8.59 + #include <unistd.h>
    8.60 + #ifdef HAVE_GETOPT_H
    8.61 + # include <getopt.h>
    8.62 + #endif
    8.63 ++#ifdef HAVE_SCHED_H
    8.64 ++#include <sched.h>
    8.65 ++#ifndef SCHED_NORMAL
    8.66 ++#define SCHED_NORMAL SCHED_OTHER
    8.67 ++#endif
    8.68 ++#endif
    8.69 + 
    8.70 + #include "object.h"
    8.71 + #include "file.h"
    8.72 +@@ -44,6 +52,9 @@ int foreground = 0;
    8.73 + timeout_t master_socket_timeout = 3 * -TICKS_PER_SEC;  /* master socket timeout, default is 3 seconds */
    8.74 + const char *server_argv0;
    8.75 + 
    8.76 ++/* global variable used here and in thread.c to determine whether wine runs with rt threads and at what base value */
    8.77 ++int base_rt_priority = -1;
    8.78 ++
    8.79 + /* parse-line args */
    8.80 + 
    8.81 + static void usage(void)
    8.82 +@@ -125,6 +136,51 @@ static void sigterm_handler( int signum )
    8.83 +     exit(1);  /* make sure atexit functions get called */
    8.84 + }
    8.85 + 
    8.86 ++#ifdef HAVE_SCHED_H
    8.87 ++void init_rt_scheduling( void )
    8.88 ++{
    8.89 ++    struct sched_param param;
    8.90 ++    struct rlimit limit;
    8.91 ++    int priority_max, policy, wine_server_rt_priority;
    8.92 ++    char *enviroment, *endptr;
    8.93 ++
    8.94 ++    getrlimit( RLIMIT_RTPRIO, &limit );
    8.95 ++    priority_max = limit.rlim_max;
    8.96 ++
    8.97 ++    /* check for realtime mode and set the base priority level */
    8.98 ++
    8.99 ++    if (!(enviroment = getenv( "WINE_RT" )))
   8.100 ++        return;
   8.101 ++    base_rt_priority = (int) strtol( enviroment, &endptr, 10 );
   8.102 ++    if (enviroment == endptr || base_rt_priority == 0 || base_rt_priority > priority_max - 10)
   8.103 ++    {
   8.104 ++        fprintf( stderr, "Unable to run WINE in rt mode, WINE_RT values supported on this system range from 1 to  %i\n", priority_max - 10 );
   8.105 ++        base_rt_priority = -1;
   8.106 ++        return;
   8.107 ++    }
   8.108 ++    fprintf( stderr, "WINE realtime scheduling hack enabled, realtime base priority has been set to %i\n", base_rt_priority );
   8.109 ++
   8.110 ++    /* determine scheduling policy for the main wineserver thread */
   8.111 ++
   8.112 ++    if (!(enviroment = getenv( "WINE_SRV_RT" )))
   8.113 ++    {
   8.114 ++        fprintf( stderr, "wineserver running SCHED_NORMAL\n" );
   8.115 ++        return;
   8.116 ++    }
   8.117 ++    wine_server_rt_priority = (int) strtol( enviroment, &endptr, 10 );
   8.118 ++    if (enviroment == endptr || wine_server_rt_priority == 0 || wine_server_rt_priority > priority_max)
   8.119 ++    {
   8.120 ++        fprintf( stderr, "Unable to run the wineserver SCHED_FIFO, valid WINE_SRV_RT values range from 1 to %i\n", priority_max );
   8.121 ++        return;
   8.122 ++    }
   8.123 ++    fprintf( stderr, "wineserver running SCHED_FIFO at priority %i\n", wine_server_rt_priority );
   8.124 ++    policy = SCHED_FIFO;
   8.125 ++    param.sched_priority = wine_server_rt_priority;
   8.126 ++    if (sched_setscheduler ( 0, policy, &param) != 0)
   8.127 ++        fprintf (stderr, "Error scheduling wineserver as SCHED_FIFO\n");
   8.128 ++}
   8.129 ++#endif
   8.130 ++
   8.131 + int main( int argc, char *argv[] )
   8.132 + {
   8.133 +     setvbuf( stderr, NULL, _IOLBF, 0 );
   8.134 +@@ -138,6 +194,10 @@ int main( int argc, char *argv[] )
   8.135 +     signal( SIGTERM, sigterm_handler );
   8.136 +     signal( SIGABRT, sigterm_handler );
   8.137 + 
   8.138 ++#ifdef HAVE_SCHED_H
   8.139 ++    init_rt_scheduling();
   8.140 ++#endif
   8.141 ++    mlockall(MCL_FUTURE);
   8.142 +     sock_init();
   8.143 +     open_master_socket();
   8.144 + 
   8.145 +diff --git a/server/thread.c b/server/thread.c
   8.146 +index 05e4121..2d103b4 100644
   8.147 +--- a/server/thread.c
   8.148 ++++ b/server/thread.c
   8.149 +@@ -32,11 +32,18 @@
   8.150 + #include <sys/types.h>
   8.151 + #include <unistd.h>
   8.152 + #include <time.h>
   8.153 +-#ifdef HAVE_POLL_H
   8.154 +-#include <poll.h>
   8.155 +-#endif
   8.156 + #ifdef HAVE_SCHED_H
   8.157 + #include <sched.h>
   8.158 ++#ifndef SCHED_NORMAL
   8.159 ++#define SCHED_NORMAL SCHED_OTHER
   8.160 ++#endif
   8.161 ++#ifndef SCHED_IDLE
   8.162 ++#define SCHED_IDLE 5 /* missing from my glibc, taken from linux/sched.h */
   8.163 ++#endif
   8.164 ++#endif
   8.165 ++
   8.166 ++#ifdef HAVE_POLL_H
   8.167 ++#include <poll.h>
   8.168 + #endif
   8.169 + 
   8.170 + #include "ntstatus.h"
   8.171 +@@ -164,6 +171,8 @@ static const struct fd_ops thread_fd_ops =
   8.172 + 
   8.173 + static struct list thread_list = LIST_INIT(thread_list);
   8.174 + 
   8.175 ++extern int base_rt_priority;
   8.176 ++
   8.177 + /* initialize the structure for a newly allocated thread */
   8.178 + static inline void init_thread_structure( struct thread *thread )
   8.179 + {
   8.180 +@@ -432,29 +441,67 @@ int set_thread_affinity( struct thread *thread, affinity_t affinity )
   8.181 +     return ret;
   8.182 + }
   8.183 + 
   8.184 +-#define THREAD_PRIORITY_REALTIME_HIGHEST 6
   8.185 +-#define THREAD_PRIORITY_REALTIME_LOWEST -7
   8.186 ++void set_thread_priority( struct thread *thread, int priority )
   8.187 ++{
   8.188 ++#ifdef HAVE_SCHED_H
   8.189 ++    struct sched_param param;
   8.190 ++    int policy;
   8.191 ++
   8.192 ++    if (base_rt_priority == -1 || (thread->unix_tid == -1)) return;
   8.193 ++
   8.194 ++    switch (priority)
   8.195 ++    {
   8.196 ++      case THREAD_PRIORITY_TIME_CRITICAL:
   8.197 ++        param.sched_priority = base_rt_priority + 10;
   8.198 ++        policy = SCHED_FIFO;
   8.199 ++        fprintf( stderr, "Thread %i at THREAD_PRIORITY_TIME_CRITICAL set to SCHED_FIFO - priority %i\n", thread->unix_tid, param.sched_priority );
   8.200 ++        break;
   8.201 ++      case THREAD_PRIORITY_HIGHEST:
   8.202 ++        param.sched_priority = base_rt_priority + 5;
   8.203 ++        policy = SCHED_FIFO;
   8.204 ++        fprintf( stderr, "Thread %i at THREAD_PRIORITY_HIGHEST set to SCHED_FIFO - priority %i\n", thread->unix_tid, param.sched_priority );
   8.205 ++        break;
   8.206 ++      case THREAD_PRIORITY_ABOVE_NORMAL:
   8.207 ++        param.sched_priority = base_rt_priority;
   8.208 ++        policy = SCHED_FIFO;
   8.209 ++        fprintf( stderr, "Thread %i at THREAD_PRIORITY_ABOVE_NORMAL set to SCHED_FIFO - priority %i\n", thread->unix_tid, param.sched_priority );
   8.210 ++        break;
   8.211 ++      case THREAD_PRIORITY_NORMAL:
   8.212 ++        param.sched_priority = 0;
   8.213 ++        policy = SCHED_NORMAL;
   8.214 ++        fprintf( stderr, "Setting thread %i at level THREAD_PRIORITY_NORMAL to SCHED_NORMAL\n", thread->unix_tid );
   8.215 ++	break;
   8.216 ++      case THREAD_PRIORITY_BELOW_NORMAL:
   8.217 ++        param.sched_priority = 0;
   8.218 ++        policy = SCHED_BATCH;
   8.219 ++        fprintf( stderr, "Setting thread %i at level THREAD_PRIORITY_BELOW_NORMAL to SCHED_BATCH\n", thread->unix_tid );
   8.220 ++        break;
   8.221 ++      case THREAD_PRIORITY_LOWEST:
   8.222 ++        param.sched_priority = 0;
   8.223 ++        policy = SCHED_BATCH;
   8.224 ++        fprintf( stderr, "Setting thread %i at THREAD_PRIORITY_LOWEST level to SCHED_BATCH\n", thread->unix_tid );
   8.225 ++        break;
   8.226 ++      case THREAD_PRIORITY_IDLE:
   8.227 ++        param.sched_priority = 0;
   8.228 ++        policy = SCHED_IDLE;
   8.229 ++        fprintf( stderr, "Setting thread %i with level THREAD_PRIORITY_IDLE to SCHED_IDLE\n", thread->unix_tid );
   8.230 ++        break;
   8.231 ++      default:
   8.232 ++        fprintf( stderr, "Error setting scheduling priority level, unknown should never come here\n" );
   8.233 ++        return;
   8.234 ++    }
   8.235 ++    if (sched_setscheduler (thread->unix_tid, policy, &param) != 0) fprintf (stderr, "Error setting priorities\n");
   8.236 ++    thread->priority = priority;
   8.237 ++    return;
   8.238 ++#endif
   8.239 ++}
   8.240 + 
   8.241 + /* set all information about a thread */
   8.242 + static void set_thread_info( struct thread *thread,
   8.243 +                              const struct set_thread_info_request *req )
   8.244 + {
   8.245 +     if (req->mask & SET_THREAD_INFO_PRIORITY)
   8.246 +-    {
   8.247 +-        int max = THREAD_PRIORITY_HIGHEST;
   8.248 +-        int min = THREAD_PRIORITY_LOWEST;
   8.249 +-        if (thread->process->priority == PROCESS_PRIOCLASS_REALTIME)
   8.250 +-        {
   8.251 +-            max = THREAD_PRIORITY_REALTIME_HIGHEST;
   8.252 +-            min = THREAD_PRIORITY_REALTIME_LOWEST;
   8.253 +-        }
   8.254 +-        if ((req->priority >= min && req->priority <= max) ||
   8.255 +-            req->priority == THREAD_PRIORITY_IDLE ||
   8.256 +-            req->priority == THREAD_PRIORITY_TIME_CRITICAL)
   8.257 +-            thread->priority = req->priority;
   8.258 +-        else
   8.259 +-            set_error( STATUS_INVALID_PARAMETER );
   8.260 +-    }
   8.261 ++        set_thread_priority( thread, req->priority );
   8.262 +     if (req->mask & SET_THREAD_INFO_AFFINITY)
   8.263 +     {
   8.264 +         if ((req->affinity & thread->process->affinity) != req->affinity)
   8.265 +-- 
   8.266 +1.7.3.2
   8.267 +
     9.1 Binary file wine-rt/stuff/wine.png has changed