Commit 1c99dc85 authored by Sam Hocevar's avatar Sam Hocevar

* updated version information to 0.2.60 -- today's release

 * started porting the X11 vout (still disabled)
 * a few unnoticeable changes in the Gnome intf
parent 8a1ec969
### THIS CHANGELOG HASN'T BEEN UPDATED FOR UNSTABLE ###
0.1.99j: 0.1.99j:
* Added hardware YUV overlay support (SDL). Huge performance * Added hardware YUV overlay support (SDL). Huge performance
......
...@@ -332,7 +332,6 @@ PLUGIN_MGA = plugins/mga/mga.o \ ...@@ -332,7 +332,6 @@ PLUGIN_MGA = plugins/mga/mga.o \
plugins/mga/vout_mga.o plugins/mga/vout_mga.o
PLUGIN_X11= plugins/x11/x11.o \ PLUGIN_X11= plugins/x11/x11.o \
plugins/x11/intf_x11.o \
plugins/x11/vout_x11.o plugins/x11/vout_x11.o
PLUGIN_YUV = plugins/yuv/yuv.o \ PLUGIN_YUV = plugins/yuv/yuv.o \
......
...@@ -213,7 +213,7 @@ Status: Done 27 Aug 2000 (Meuuh) ...@@ -213,7 +213,7 @@ Status: Done 27 Aug 2000 (Meuuh)
Task: 0x36 Task: 0x36
Difficulty: Medium Difficulty: Medium
Urgency: Normal Urgency: Normal
Description: Description: Enhance the interface
. Finish the new keyboard input interface to support . Finish the new keyboard input interface to support
interfaces that allow modifiers. This will allow the SDL to run interfaces that allow modifiers. This will allow the SDL to run
properly. properly.
......
...@@ -602,7 +602,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ...@@ -602,7 +602,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6 echo "$ac_t""$host" 1>&6
VLC_VERSION=0.2.50 VLC_VERSION=0.2.60
VLC_CODENAME=Urumov VLC_CODENAME=Urumov
...@@ -1018,7 +1018,7 @@ else ...@@ -1018,7 +1018,7 @@ else
int main() { int main() {
/* Ultrix mips cc rejects this. */ /* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x = {0,0}; typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */ /* SunOS 4.1.1 cc rejects this. */
char const *const *ccp; char const *const *ccp;
char **p; char **p;
...@@ -1975,15 +1975,12 @@ else ...@@ -1975,15 +1975,12 @@ else
#include <sys/types.h> #include <sys/types.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <stdlib.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
/* This mess was copied from the GNU getpagesize.h. */ /* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE #ifndef HAVE_GETPAGESIZE
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
/* Assume that all systems that can run configure have sys/param.h. */ /* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H # ifndef HAVE_SYS_PARAM_H
...@@ -2038,7 +2035,7 @@ main() ...@@ -2038,7 +2035,7 @@ main()
/* /*
* First, make a file with some known garbage in it. * First, make a file with some known garbage in it.
*/ */
data = (char*)malloc(pagesize); data = malloc(pagesize);
if (!data) if (!data)
exit(1); exit(1);
for (i = 0; i < pagesize; ++i) for (i = 0; i < pagesize; ++i)
...@@ -2059,7 +2056,7 @@ main() ...@@ -2059,7 +2056,7 @@ main()
fd = open("conftestmmap", O_RDWR); fd = open("conftestmmap", O_RDWR);
if (fd < 0) if (fd < 0)
exit(1); exit(1);
data2 = (char*)malloc(2 * pagesize); data2 = malloc(2 * pagesize);
if (!data2) if (!data2)
exit(1); exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
...@@ -2077,7 +2074,7 @@ main() ...@@ -2077,7 +2074,7 @@ main()
*/ */
for (i = 0; i < pagesize; ++i) for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1; *(data2 + i) = *(data2 + i) + 1;
data3 = (char*)malloc(pagesize); data3 = malloc(pagesize);
if (!data3) if (!data3)
exit(1); exit(1);
if (read(fd, data3, pagesize) != pagesize) if (read(fd, data3, pagesize) != pagesize)
...@@ -2091,7 +2088,7 @@ main() ...@@ -2091,7 +2088,7 @@ main()
} }
EOF EOF
if { (eval echo configure:2095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null if { (eval echo configure:2092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then then
ac_cv_func_mmap_fixed_mapped=yes ac_cv_func_mmap_fixed_mapped=yes
else else
...@@ -2114,12 +2111,12 @@ EOF ...@@ -2114,12 +2111,12 @@ EOF
fi fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
echo "configure:2118: checking return type of signal handlers" >&5 echo "configure:2115: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2123 "configure" #line 2120 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
#include <signal.h> #include <signal.h>
...@@ -2136,7 +2133,7 @@ int main() { ...@@ -2136,7 +2133,7 @@ int main() {
int i; int i;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_type_signal=void ac_cv_type_signal=void
else else
...@@ -2155,7 +2152,7 @@ EOF ...@@ -2155,7 +2152,7 @@ EOF
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
echo "configure:2159: checking for dlopen in -ldl" >&5 echo "configure:2156: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2163,7 +2160,7 @@ else ...@@ -2163,7 +2160,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS" LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2167 "configure" #line 2164 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2174,7 +2171,7 @@ int main() { ...@@ -2174,7 +2171,7 @@ int main() {
dlopen() dlopen()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2202,7 +2199,7 @@ else ...@@ -2202,7 +2199,7 @@ else
fi fi
echo $ac_n "checking for optarg in -lgnugetopt""... $ac_c" 1>&6 echo $ac_n "checking for optarg in -lgnugetopt""... $ac_c" 1>&6
echo "configure:2206: checking for optarg in -lgnugetopt" >&5 echo "configure:2203: checking for optarg in -lgnugetopt" >&5
ac_lib_var=`echo gnugetopt'_'optarg | sed 'y%./+-%__p_%'` ac_lib_var=`echo gnugetopt'_'optarg | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2210,7 +2207,7 @@ else ...@@ -2210,7 +2207,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lgnugetopt $LIBS" LIBS="-lgnugetopt $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2214 "configure" #line 2211 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2221,7 +2218,7 @@ int main() { ...@@ -2221,7 +2218,7 @@ int main() {
optarg() optarg()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2249,7 +2246,7 @@ else ...@@ -2249,7 +2246,7 @@ else
fi fi
echo $ac_n "checking for _ in -lbe""... $ac_c" 1>&6 echo $ac_n "checking for _ in -lbe""... $ac_c" 1>&6
echo "configure:2253: checking for _ in -lbe" >&5 echo "configure:2250: checking for _ in -lbe" >&5
ac_lib_var=`echo be'_'_ | sed 'y%./+-%__p_%'` ac_lib_var=`echo be'_'_ | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2257,7 +2254,7 @@ else ...@@ -2257,7 +2254,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lbe $LIBS" LIBS="-lbe $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2261 "configure" #line 2258 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2268,7 +2265,7 @@ int main() { ...@@ -2268,7 +2265,7 @@ int main() {
_() _()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2296,7 +2293,7 @@ else ...@@ -2296,7 +2293,7 @@ else
fi fi
echo $ac_n "checking for _ in -lgame""... $ac_c" 1>&6 echo $ac_n "checking for _ in -lgame""... $ac_c" 1>&6
echo "configure:2300: checking for _ in -lgame" >&5 echo "configure:2297: checking for _ in -lgame" >&5
ac_lib_var=`echo game'_'_ | sed 'y%./+-%__p_%'` ac_lib_var=`echo game'_'_ | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2304,7 +2301,7 @@ else ...@@ -2304,7 +2301,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lgame $LIBS" LIBS="-lgame $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2308 "configure" #line 2305 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2315,7 +2312,7 @@ int main() { ...@@ -2315,7 +2312,7 @@ int main() {
_() _()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2343,7 +2340,7 @@ else ...@@ -2343,7 +2340,7 @@ else
fi fi
echo $ac_n "checking for _ in -lroot""... $ac_c" 1>&6 echo $ac_n "checking for _ in -lroot""... $ac_c" 1>&6
echo "configure:2347: checking for _ in -lroot" >&5 echo "configure:2344: checking for _ in -lroot" >&5
ac_lib_var=`echo root'_'_ | sed 'y%./+-%__p_%'` ac_lib_var=`echo root'_'_ | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2351,7 +2348,7 @@ else ...@@ -2351,7 +2348,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lroot $LIBS" LIBS="-lroot $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2355 "configure" #line 2352 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2362,7 +2359,7 @@ int main() { ...@@ -2362,7 +2359,7 @@ int main() {
_() _()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2390,7 +2387,7 @@ else ...@@ -2390,7 +2387,7 @@ else
fi fi
echo $ac_n "checking for powl in -lm""... $ac_c" 1>&6 echo $ac_n "checking for powl in -lm""... $ac_c" 1>&6
echo "configure:2394: checking for powl in -lm" >&5 echo "configure:2391: checking for powl in -lm" >&5
ac_lib_var=`echo m'_'powl | sed 'y%./+-%__p_%'` ac_lib_var=`echo m'_'powl | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2398,7 +2395,7 @@ else ...@@ -2398,7 +2395,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS" LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2402 "configure" #line 2399 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2409,7 +2406,7 @@ int main() { ...@@ -2409,7 +2406,7 @@ int main() {
powl() powl()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2437,7 +2434,7 @@ else ...@@ -2437,7 +2434,7 @@ else
fi fi
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
echo "configure:2441: checking for pthread_create in -lpthread" >&5 echo "configure:2438: checking for pthread_create in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2445,7 +2442,7 @@ else ...@@ -2445,7 +2442,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS" LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2449 "configure" #line 2446 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2456,7 +2453,7 @@ int main() { ...@@ -2456,7 +2453,7 @@ int main() {
pthread_create() pthread_create()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2484,7 +2481,7 @@ else ...@@ -2484,7 +2481,7 @@ else
fi fi
echo $ac_n "checking for thread_create in -lthreads""... $ac_c" 1>&6 echo $ac_n "checking for thread_create in -lthreads""... $ac_c" 1>&6
echo "configure:2488: checking for thread_create in -lthreads" >&5 echo "configure:2485: checking for thread_create in -lthreads" >&5
ac_lib_var=`echo threads'_'thread_create | sed 'y%./+-%__p_%'` ac_lib_var=`echo threads'_'thread_create | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -2492,7 +2489,7 @@ else ...@@ -2492,7 +2489,7 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lthreads $LIBS" LIBS="-lthreads $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2496 "configure" #line 2493 "configure"
#include "confdefs.h" #include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */ /* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2 /* We use char because int might match the return type of a gcc2
...@@ -2503,7 +2500,7 @@ int main() { ...@@ -2503,7 +2500,7 @@ int main() {
thread_create() thread_create()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
...@@ -2532,12 +2529,12 @@ fi ...@@ -2532,12 +2529,12 @@ fi
echo $ac_n "checking for getopt_long""... $ac_c" 1>&6 echo $ac_n "checking for getopt_long""... $ac_c" 1>&6
echo "configure:2536: checking for getopt_long" >&5 echo "configure:2533: checking for getopt_long" >&5
if eval "test \"`echo '$''{'ac_cv_func_getopt_long'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_func_getopt_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2541 "configure" #line 2538 "configure"
#include "confdefs.h" #include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char getopt_long(); below. */ which can conflict with char getopt_long(); below. */
...@@ -2560,7 +2557,7 @@ getopt_long(); ...@@ -2560,7 +2557,7 @@ getopt_long();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:2561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_func_getopt_long=yes" eval "ac_cv_func_getopt_long=yes"
else else
...@@ -2587,17 +2584,17 @@ for ac_hdr in stddef.h ...@@ -2587,17 +2584,17 @@ for ac_hdr in stddef.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2591: checking for $ac_hdr" >&5 echo "configure:2588: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2596 "configure" #line 2593 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2627,17 +2624,17 @@ for ac_hdr in getopt.h ...@@ -2627,17 +2624,17 @@ for ac_hdr in getopt.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2631: checking for $ac_hdr" >&5 echo "configure:2628: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2636 "configure" #line 2633 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2667,17 +2664,17 @@ for ac_hdr in sys/sockio.h ...@@ -2667,17 +2664,17 @@ for ac_hdr in sys/sockio.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2671: checking for $ac_hdr" >&5 echo "configure:2668: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2676 "configure" #line 2673 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2707,17 +2704,17 @@ for ac_hdr in fcntl.h sys/ioctl.h sys/time.h unistd.h ...@@ -2707,17 +2704,17 @@ for ac_hdr in fcntl.h sys/ioctl.h sys/time.h unistd.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2711: checking for $ac_hdr" >&5 echo "configure:2708: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2716 "configure" #line 2713 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2747,17 +2744,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h ...@@ -2747,17 +2744,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2751: checking for $ac_hdr" >&5 echo "configure:2748: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2756 "configure" #line 2753 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2758: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2787,17 +2784,17 @@ for ac_hdr in dlfcn.h image.h ...@@ -2787,17 +2784,17 @@ for ac_hdr in dlfcn.h image.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2791: checking for $ac_hdr" >&5 echo "configure:2788: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2796 "configure" #line 2793 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2827,17 +2824,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h ...@@ -2827,17 +2824,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2831: checking for $ac_hdr" >&5 echo "configure:2828: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2836 "configure" #line 2833 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2867,17 +2864,17 @@ for ac_hdr in machine/param.h ...@@ -2867,17 +2864,17 @@ for ac_hdr in machine/param.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2871: checking for $ac_hdr" >&5 echo "configure:2868: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2876 "configure" #line 2873 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2908,17 +2905,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h ...@@ -2908,17 +2905,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2912: checking for $ac_hdr" >&5 echo "configure:2909: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2917 "configure" #line 2914 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2922: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:2919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -2949,9 +2946,9 @@ save_CFLAGS=$CFLAGS ...@@ -2949,9 +2946,9 @@ save_CFLAGS=$CFLAGS
CFLAGS="${CFLAGS} -Wall -Werror" CFLAGS="${CFLAGS} -Wall -Werror"
echo $ac_n "checking for ntohl in sys/param.h""... $ac_c" 1>&6 echo $ac_n "checking for ntohl in sys/param.h""... $ac_c" 1>&6
echo "configure:2953: checking for ntohl in sys/param.h" >&5 echo "configure:2950: checking for ntohl in sys/param.h" >&5
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2955 "configure" #line 2952 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/param.h> #include <sys/param.h>
void foo() { int meuh; ntohl(meuh); } void foo() { int meuh; ntohl(meuh); }
...@@ -2959,7 +2956,7 @@ int main() { ...@@ -2959,7 +2956,7 @@ int main() {
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define NTOHL_IN_SYS_PARAM_H 1 #define NTOHL_IN_SYS_PARAM_H 1
...@@ -2976,16 +2973,16 @@ rm -f conftest* ...@@ -2976,16 +2973,16 @@ rm -f conftest*
CFLAGS="${CFLAGS} -rdynamic" CFLAGS="${CFLAGS} -rdynamic"
echo $ac_n "checking if \$CC accepts -rdynamic""... $ac_c" 1>&6 echo $ac_n "checking if \$CC accepts -rdynamic""... $ac_c" 1>&6
echo "configure:2980: checking if \$CC accepts -rdynamic" >&5 echo "configure:2977: checking if \$CC accepts -rdynamic" >&5
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2982 "configure" #line 2979 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
DYNAMIC_FLAG="-rdynamic" DYNAMIC_FLAG="-rdynamic"
echo "$ac_t""yes" 1>&6 echo "$ac_t""yes" 1>&6
...@@ -3000,9 +2997,9 @@ rm -f conftest* ...@@ -3000,9 +2997,9 @@ rm -f conftest*
CFLAGS=$save_CFLAGS CFLAGS=$save_CFLAGS
echo $ac_n "checking for boolean_t in sys/types.h""... $ac_c" 1>&6 echo $ac_n "checking for boolean_t in sys/types.h""... $ac_c" 1>&6
echo "configure:3004: checking for boolean_t in sys/types.h" >&5 echo "configure:3001: checking for boolean_t in sys/types.h" >&5
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3006 "configure" #line 3003 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
void quux() { boolean_t foo; } void quux() { boolean_t foo; }
...@@ -3010,7 +3007,7 @@ int main() { ...@@ -3010,7 +3007,7 @@ int main() {
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:3014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:3011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
#define BOOLEAN_T_IN_SYS_TYPES_H 1 #define BOOLEAN_T_IN_SYS_TYPES_H 1
...@@ -3026,18 +3023,18 @@ fi ...@@ -3026,18 +3023,18 @@ fi
rm -f conftest* rm -f conftest*
echo $ac_n "checking for working const""... $ac_c" 1>&6 echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:3030: checking for working const" >&5 echo "configure:3027: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3035 "configure" #line 3032 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
/* Ultrix mips cc rejects this. */ /* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x = {0,0}; typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */ /* SunOS 4.1.1 cc rejects this. */
char const *const *ccp; char const *const *ccp;
char **p; char **p;
...@@ -3080,7 +3077,7 @@ ccp = (char const *const *) p; ...@@ -3080,7 +3077,7 @@ ccp = (char const *const *) p;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:3084: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:3081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_c_const=yes ac_cv_c_const=yes
else else
...@@ -3101,12 +3098,12 @@ EOF ...@@ -3101,12 +3098,12 @@ EOF
fi fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:3105: checking for ANSI C header files" >&5 echo "configure:3102: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3110 "configure" #line 3107 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
...@@ -3114,7 +3111,7 @@ else ...@@ -3114,7 +3111,7 @@ else
#include <float.h> #include <float.h>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:3115: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -3131,7 +3128,7 @@ rm -f conftest* ...@@ -3131,7 +3128,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI. # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3135 "configure" #line 3132 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <string.h> #include <string.h>
EOF EOF
...@@ -3149,7 +3146,7 @@ fi ...@@ -3149,7 +3146,7 @@ fi
if test $ac_cv_header_stdc = yes; then if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3153 "configure" #line 3150 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <stdlib.h> #include <stdlib.h>
EOF EOF
...@@ -3170,7 +3167,7 @@ if test "$cross_compiling" = yes; then ...@@ -3170,7 +3167,7 @@ if test "$cross_compiling" = yes; then
: :
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3174 "configure" #line 3171 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <ctype.h> #include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
...@@ -3181,7 +3178,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); ...@@ -3181,7 +3178,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); } exit (0); }
EOF EOF
if { (eval echo configure:3185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then then
: :
else else
...@@ -3205,12 +3202,12 @@ EOF ...@@ -3205,12 +3202,12 @@ EOF
fi fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6 echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:3209: checking for size_t" >&5 echo "configure:3206: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3214 "configure" #line 3211 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
#if STDC_HEADERS #if STDC_HEADERS
...@@ -3238,12 +3235,12 @@ EOF ...@@ -3238,12 +3235,12 @@ EOF
fi fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
echo "configure:3242: checking whether time.h and sys/time.h may both be included" >&5 echo "configure:3239: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3247 "configure" #line 3244 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
...@@ -3252,7 +3249,7 @@ int main() { ...@@ -3252,7 +3249,7 @@ int main() {
struct tm *tp; struct tm *tp;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:3256: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:3253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_header_time=yes ac_cv_header_time=yes
else else
...@@ -3277,17 +3274,17 @@ for ac_hdr in sys/ioctl.h ...@@ -3277,17 +3274,17 @@ for ac_hdr in sys/ioctl.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3281: checking for $ac_hdr" >&5 echo "configure:3278: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3286 "configure" #line 3283 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:3288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -3311,17 +3308,17 @@ EOF ...@@ -3311,17 +3308,17 @@ EOF
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3315: checking for $ac_hdr" >&5 echo "configure:3312: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3320 "configure" #line 3317 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:3322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -3348,7 +3345,7 @@ fi ...@@ -3348,7 +3345,7 @@ fi
done done
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3352 "configure" #line 3349 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <linux/cdrom.h> #include <linux/cdrom.h>
EOF EOF
...@@ -3509,17 +3506,17 @@ if test "${enable_alsa+set}" = set; then ...@@ -3509,17 +3506,17 @@ if test "${enable_alsa+set}" = set; then
enableval="$enable_alsa" enableval="$enable_alsa"
if test x$enable_alsa = xyes; then ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'` if test x$enable_alsa = xyes; then ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6 echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
echo "configure:3513: checking for sys/asoundlib.h" >&5 echo "configure:3510: checking for sys/asoundlib.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3518 "configure" #line 3515 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/asoundlib.h> #include <sys/asoundlib.h>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:3520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
...@@ -3536,7 +3533,7 @@ fi ...@@ -3536,7 +3533,7 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6 echo "$ac_t""yes" 1>&6
echo $ac_n "checking for main in -lasound""... $ac_c" 1>&6 echo $ac_n "checking for main in -lasound""... $ac_c" 1>&6
echo "configure:3540: checking for main in -lasound" >&5 echo "configure:3537: checking for main in -lasound" >&5
ac_lib_var=`echo asound'_'main | sed 'y%./+-%__p_%'` ac_lib_var=`echo asound'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
...@@ -3544,14 +3541,14 @@ else ...@@ -3544,14 +3541,14 @@ else
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="-lasound $LIBS" LIBS="-lasound $LIBS"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 3548 "configure" #line 3545 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
main() main()
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:3555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:3552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes" eval "ac_cv_lib_$ac_lib_var=yes"
else else
......
...@@ -4,7 +4,7 @@ AC_CONFIG_HEADER(include/defs.h) ...@@ -4,7 +4,7 @@ AC_CONFIG_HEADER(include/defs.h)
AC_CANONICAL_HOST AC_CANONICAL_HOST
VLC_VERSION=0.2.50 VLC_VERSION=0.2.60
AC_SUBST(VLC_VERSION) AC_SUBST(VLC_VERSION)
VLC_CODENAME=Urumov VLC_CODENAME=Urumov
AC_SUBST(VLC_CODENAME) AC_SUBST(VLC_CODENAME)
......
vlc (0.2.60-1) unstable; urgency=low
* New release. The package build is most presumably FUBAR.
-- Samuel Hocevar <sam@zoy.org> Wed, 14 Feb 2001 08:33:46 +0100
vlc (0.2.50-1) unstable; urgency=low vlc (0.2.50-1) unstable; urgency=low
* Only build vlc-glide under x86 (Closes: #84046). * Only build vlc-glide under x86 (Closes: #84046).
......
...@@ -33,14 +33,6 @@ ...@@ -33,14 +33,6 @@
#include "common.h" /* boolean_t, byte_t */ #include "common.h" /* boolean_t, byte_t */
#include "threads.h" #include "threads.h"
#include "mtime.h" #include "mtime.h"
#include "tests.h"
#include "interface.h"
#include "audio_output.h"
#include "video.h"
#include "video_output.h"
#include "modules.h" #include "modules.h"
#include "modules_inner.h" #include "modules_inner.h"
......
...@@ -33,11 +33,6 @@ ...@@ -33,11 +33,6 @@
#include "common.h" /* boolean_t, byte_t */ #include "common.h" /* boolean_t, byte_t */
#include "threads.h" #include "threads.h"
#include "mtime.h" #include "mtime.h"
#include "tests.h"
#include "interface.h"
#include "video.h"
#include "video_output.h"
#include "modules.h" #include "modules.h"
#include "modules_inner.h" #include "modules_inner.h"
......
...@@ -99,14 +99,7 @@ on_menubar_playlist_activate (GtkMenuItem *menuitem, ...@@ -99,14 +99,7 @@ on_menubar_playlist_activate (GtkMenuItem *menuitem,
"p_intf", p_intf ); "p_intf", p_intf );
} }
gtk_widget_show( p_intf->p_sys->p_playlist ); gtk_widget_show( p_intf->p_sys->p_playlist );
} gdk_window_raise( p_intf->p_sys->p_playlist->window );
void
on_menubar_plugins_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
} }
...@@ -131,6 +124,7 @@ on_menubar_about_activate (GtkMenuItem *menuitem, ...@@ -131,6 +124,7 @@ on_menubar_about_activate (GtkMenuItem *menuitem,
"p_intf", p_intf ); "p_intf", p_intf );
} }
gtk_widget_show( p_intf->p_sys->p_about ); gtk_widget_show( p_intf->p_sys->p_about );
gdk_window_raise( p_intf->p_sys->p_about->window );
} }
...@@ -208,6 +202,7 @@ on_toolbar_playlist_clicked (GtkButton *button, ...@@ -208,6 +202,7 @@ on_toolbar_playlist_clicked (GtkButton *button,
"p_intf", p_intf ); "p_intf", p_intf );
} }
gtk_widget_show( p_intf->p_sys->p_playlist ); gtk_widget_show( p_intf->p_sys->p_playlist );
gdk_window_raise( p_intf->p_sys->p_playlist->window );
} }
...@@ -354,6 +349,7 @@ on_popup_about_activate (GtkMenuItem *menuitem, ...@@ -354,6 +349,7 @@ on_popup_about_activate (GtkMenuItem *menuitem,
"p_intf", p_intf ); "p_intf", p_intf );
} }
gtk_widget_show( p_intf->p_sys->p_about ); gtk_widget_show( p_intf->p_sys->p_about );
gdk_window_raise( p_intf->p_sys->p_about->window );
} }
...@@ -466,3 +462,67 @@ on_hscale_button_press_event (GtkWidget *widget, ...@@ -466,3 +462,67 @@ on_hscale_button_press_event (GtkWidget *widget,
} }
void
on_intf_modules_destroy (GtkObject *object,
gpointer user_data)
{
}
void
on_modules_ok_clicked (GtkButton *button,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_modules" );
gtk_widget_hide( p_intf->p_sys->p_modules );
}
void
on_modules_apply_clicked (GtkButton *button,
gpointer user_data)
{
}
void
on_modules_cancel_clicked (GtkButton *button,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_modules" );
gtk_widget_hide( p_intf->p_sys->p_modules );
}
void
on_playlist_ok_clicked (GtkButton *button,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(button), "intf_playlist" );
gtk_widget_hide( p_intf->p_sys->p_playlist );
}
void
on_menubar_modules_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
intf_thread_t *p_intf = GetIntf( GTK_WIDGET(menuitem), "intf_window" );
if( !GTK_IS_WIDGET( p_intf->p_sys->p_modules ) )
{
p_intf->p_sys->p_modules = create_intf_modules();
gtk_object_set_data( GTK_OBJECT( p_intf->p_sys->p_modules ),
"p_intf", p_intf );
}
gtk_widget_show( p_intf->p_sys->p_modules );
gdk_window_raise( p_intf->p_sys->p_modules->window );
}
...@@ -159,3 +159,31 @@ gboolean ...@@ -159,3 +159,31 @@ gboolean
on_hscale_button_press_event (GtkWidget *widget, on_hscale_button_press_event (GtkWidget *widget,
GdkEventButton *event, GdkEventButton *event,
gpointer user_data); gpointer user_data);
void
on_intf_modules_destroy (GtkObject *object,
gpointer user_data);
void
on_modules_ok_clicked (GtkButton *button,
gpointer user_data);
void
on_modules_apply_clicked (GtkButton *button,
gpointer user_data);
void
on_modules_cancel_clicked (GtkButton *button,
gpointer user_data);
void
on_intf_playlist_destroy (GtkObject *object,
gpointer user_data);
void
on_playlist_ok_clicked (GtkButton *button,
gpointer user_data);
void
on_menubar_modules_activate (GtkMenuItem *menuitem,
gpointer user_data);
...@@ -35,9 +35,9 @@ static GnomeUIInfo menubar_view_menu_uiinfo[] = ...@@ -35,9 +35,9 @@ static GnomeUIInfo menubar_view_menu_uiinfo[] =
0, (GdkModifierType) 0, NULL 0, (GdkModifierType) 0, NULL
}, },
{ {
GNOME_APP_UI_ITEM, N_("_Plugins"), GNOME_APP_UI_ITEM, N_("_Modules"),
N_("Open the plugin manager"), N_("Open the plugin manager"),
(gpointer) on_menubar_plugins_activate, NULL, NULL, (gpointer) on_menubar_modules_activate, NULL, NULL,
GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
0, (GdkModifierType) 0, NULL 0, (GdkModifierType) 0, NULL
}, },
...@@ -130,7 +130,7 @@ create_intf_window (void) ...@@ -130,7 +130,7 @@ create_intf_window (void)
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_ref (menubar_view_menu_uiinfo[1].widget); gtk_widget_ref (menubar_view_menu_uiinfo[1].widget);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_plugins", gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_modules",
menubar_view_menu_uiinfo[1].widget, menubar_view_menu_uiinfo[1].widget,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
...@@ -319,7 +319,7 @@ create_intf_window (void) ...@@ -319,7 +319,7 @@ create_intf_window (void)
gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5); gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
gtk_misc_set_padding (GTK_MISC (label7), 5, 0); gtk_misc_set_padding (GTK_MISC (label7), 5, 0);
hscale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 0, 0))); hscale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 5, 1)));
gtk_widget_ref (hscale); gtk_widget_ref (hscale);
gtk_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale, gtk_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
...@@ -543,112 +543,164 @@ create_intf_fileopen (void) ...@@ -543,112 +543,164 @@ create_intf_fileopen (void)
return intf_fileopen; return intf_fileopen;
} }
GtkWidget*
create_intf_modules (void)
{
GtkWidget *intf_modules;
GtkWidget *dialog_vbox1;
GtkWidget *label12;
GtkWidget *dialog_action_area1;
GtkWidget *modules_ok;
GtkWidget *modules_apply;
GtkWidget *modules_cancel;
intf_modules = gnome_dialog_new (_("Modules"), NULL);
gtk_object_set_data (GTK_OBJECT (intf_modules), "intf_modules", intf_modules);
gtk_window_set_policy (GTK_WINDOW (intf_modules), FALSE, FALSE, FALSE);
dialog_vbox1 = GNOME_DIALOG (intf_modules)->vbox;
gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_vbox1", dialog_vbox1);
gtk_widget_show (dialog_vbox1);
label12 = gtk_label_new (_("Sorry, the module manager isn't functional yet. Please retry in a later version."));
gtk_widget_ref (label12);
gtk_object_set_data_full (GTK_OBJECT (intf_modules), "label12", label12,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label12);
gtk_box_pack_start (GTK_BOX (dialog_vbox1), label12, FALSE, FALSE, 0);
dialog_action_area1 = GNOME_DIALOG (intf_modules)->action_area;
gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_action_area1", dialog_action_area1);
gtk_widget_show (dialog_action_area1);
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8);
gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_OK);
modules_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
gtk_widget_ref (modules_ok);
gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_ok", modules_ok,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (modules_ok);
GTK_WIDGET_SET_FLAGS (modules_ok, GTK_CAN_DEFAULT);
gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_APPLY);
modules_apply = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
gtk_widget_ref (modules_apply);
gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_apply", modules_apply,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (modules_apply);
GTK_WIDGET_SET_FLAGS (modules_apply, GTK_CAN_DEFAULT);
gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_CANCEL);
modules_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
gtk_widget_ref (modules_cancel);
gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_cancel", modules_cancel,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (modules_cancel);
GTK_WIDGET_SET_FLAGS (modules_cancel, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (intf_modules), "destroy",
GTK_SIGNAL_FUNC (on_intf_modules_destroy),
NULL);
gtk_signal_connect (GTK_OBJECT (modules_ok), "clicked",
GTK_SIGNAL_FUNC (on_modules_ok_clicked),
NULL);
gtk_signal_connect (GTK_OBJECT (modules_apply), "clicked",
GTK_SIGNAL_FUNC (on_modules_apply_clicked),
NULL);
gtk_signal_connect (GTK_OBJECT (modules_cancel), "clicked",
GTK_SIGNAL_FUNC (on_modules_cancel_clicked),
NULL);
return intf_modules;
}
GtkWidget* GtkWidget*
create_intf_playlist (void) create_intf_playlist (void)
{ {
GtkWidget *intf_playlist; GtkWidget *intf_playlist;
GtkWidget *vbox1; GtkWidget *dialog_vbox2;
GtkWidget *scrolledwindow2; GtkWidget *label11;
GtkWidget *clist1; GtkWidget *scrolledwindow3;
GtkWidget *label3; GtkWidget *clist2;
GtkWidget *label4; GtkWidget *label8;
GtkWidget *label5; GtkWidget *label9;
GtkWidget *hseparator1; GtkWidget *label10;
GtkWidget *hbox1; GtkWidget *dialog_action_area2;
GtkWidget *button1; GtkWidget *playlist_ok;
GtkWidget *playlist_close;
GtkWidget *playlist_help; intf_playlist = gnome_dialog_new (_("Playlist"), NULL);
intf_playlist = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist); gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist);
gtk_window_set_title (GTK_WINDOW (intf_playlist), _("Playlist"));
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox1);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "vbox1", vbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (intf_playlist), vbox1);
scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); dialog_vbox2 = GNOME_DIALOG (intf_playlist)->vbox;
gtk_widget_ref (scrolledwindow2); gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_vbox2", dialog_vbox2);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow2", scrolledwindow2, gtk_widget_show (dialog_vbox2);
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (scrolledwindow2);
gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow2, TRUE, TRUE, 0);
clist1 = gtk_clist_new (3); label11 = gtk_label_new (_("Sorry, the playlist isn't functional yet. Please retry in a later version."));
gtk_widget_ref (clist1); gtk_widget_ref (label11);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist1", clist1, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label11", label11,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (clist1); gtk_widget_show (label11);
gtk_container_add (GTK_CONTAINER (scrolledwindow2), clist1); gtk_box_pack_start (GTK_BOX (dialog_vbox2), label11, FALSE, FALSE, 0);
gtk_clist_set_column_width (GTK_CLIST (clist1), 0, 189);
gtk_clist_set_column_width (GTK_CLIST (clist1), 1, 80);
gtk_clist_set_column_width (GTK_CLIST (clist1), 2, 80);
gtk_clist_column_titles_show (GTK_CLIST (clist1));
label3 = gtk_label_new (_("Name")); scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_ref (label3); gtk_widget_ref (scrolledwindow3);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label3", label3, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow3", scrolledwindow3,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label3); gtk_widget_show (scrolledwindow3);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 0, label3); gtk_box_pack_start (GTK_BOX (dialog_vbox2), scrolledwindow3, TRUE, TRUE, 0);
label4 = gtk_label_new (_("Type")); clist2 = gtk_clist_new (3);
gtk_widget_ref (label4); gtk_widget_ref (clist2);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label4", label4, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist2", clist2,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label4); gtk_widget_show (clist2);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 1, label4); gtk_container_add (GTK_CONTAINER (scrolledwindow3), clist2);
gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 211);
gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 49);
gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 35);
gtk_clist_column_titles_hide (GTK_CLIST (clist2));
label5 = gtk_label_new (_("Length")); label8 = gtk_label_new (_("Name"));
gtk_widget_ref (label5); gtk_widget_ref (label8);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label5", label5, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label8", label8,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label5); gtk_widget_show (label8);
gtk_clist_set_column_widget (GTK_CLIST (clist1), 2, label5); gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, label8);
hseparator1 = gtk_hseparator_new (); label9 = gtk_label_new (_("Type"));
gtk_widget_ref (hseparator1); gtk_widget_ref (label9);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "hseparator1", hseparator1, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label9", label9,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hseparator1); gtk_widget_show (label9);
gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 0); gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, label9);
hbox1 = gtk_hbox_new (TRUE, 0); label10 = gtk_label_new (_("Length"));
gtk_widget_ref (hbox1); gtk_widget_ref (label10);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "hbox1", hbox1, gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label10", label10,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (hbox1); gtk_widget_show (label10);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, label10);
button1 = gtk_button_new_with_label (_("Wazaaaa !")); dialog_action_area2 = GNOME_DIALOG (intf_playlist)->action_area;
gtk_widget_ref (button1); gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_action_area2", dialog_action_area2);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "button1", button1, gtk_widget_show (dialog_action_area2);
(GtkDestroyNotify) gtk_widget_unref); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
gtk_widget_show (button1); gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area2), 8);
gtk_box_pack_start (GTK_BOX (hbox1), button1, FALSE, FALSE, 0);
playlist_close = gnome_stock_button (GNOME_STOCK_BUTTON_CLOSE);
gtk_widget_ref (playlist_close);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_close", playlist_close,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (playlist_close);
gtk_box_pack_start (GTK_BOX (hbox1), playlist_close, FALSE, FALSE, 0);
playlist_help = gnome_stock_button (GNOME_STOCK_BUTTON_HELP); gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_OK);
gtk_widget_ref (playlist_help); playlist_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_help", playlist_help, gtk_widget_ref (playlist_ok);
gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok", playlist_ok,
(GtkDestroyNotify) gtk_widget_unref); (GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (playlist_help); gtk_widget_show (playlist_ok);
gtk_box_pack_start (GTK_BOX (hbox1), playlist_help, FALSE, FALSE, 0); GTK_WIDGET_SET_FLAGS (playlist_ok, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy", gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
GTK_SIGNAL_FUNC (on_intf_playlist_destroy), GTK_SIGNAL_FUNC (on_intf_playlist_destroy),
NULL); NULL);
gtk_signal_connect (GTK_OBJECT (playlist_close), "clicked", gtk_signal_connect (GTK_OBJECT (playlist_ok), "clicked",
GTK_SIGNAL_FUNC (on_playlist_close_clicked), GTK_SIGNAL_FUNC (on_playlist_ok_clicked),
NULL); NULL);
return intf_playlist; return intf_playlist;
......
...@@ -6,4 +6,5 @@ GtkWidget* create_intf_window (void); ...@@ -6,4 +6,5 @@ GtkWidget* create_intf_window (void);
GtkWidget* create_intf_popup (void); GtkWidget* create_intf_popup (void);
GtkWidget* create_intf_about (void); GtkWidget* create_intf_about (void);
GtkWidget* create_intf_fileopen (void); GtkWidget* create_intf_fileopen (void);
GtkWidget* create_intf_modules (void);
GtkWidget* create_intf_playlist (void); GtkWidget* create_intf_playlist (void);
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* gnome_sys.h: private Gnome interface description * gnome_sys.h: private Gnome interface description
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: gnome_sys.h,v 1.3 2001/02/13 04:29:46 sam Exp $ * $Id: gnome_sys.h,v 1.4 2001/02/14 07:48:18 sam Exp $
* *
* Authors: * Authors:
* *
...@@ -41,6 +41,7 @@ typedef struct intf_sys_s ...@@ -41,6 +41,7 @@ typedef struct intf_sys_s
GtkWidget * p_window; /* main window */ GtkWidget * p_window; /* main window */
GtkWidget * p_popup; /* popup menu */ GtkWidget * p_popup; /* popup menu */
GtkWidget * p_playlist; /* playlist */ GtkWidget * p_playlist; /* playlist */
GtkWidget * p_modules; /* module manager */
GtkWidget * p_about; /* about window */ GtkWidget * p_about; /* about window */
GtkWidget * p_fileopen; /* file open window */ GtkWidget * p_fileopen; /* file open window */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* intf_gnome.c: Gnome interface * intf_gnome.c: Gnome interface
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: intf_gnome.c,v 1.10 2001/02/13 04:29:46 sam Exp $ * $Id: intf_gnome.c,v 1.11 2001/02/14 07:48:18 sam Exp $
* *
* Authors: * Authors:
* *
...@@ -179,6 +179,7 @@ static void intf_Run( intf_thread_t *p_intf ) ...@@ -179,6 +179,7 @@ static void intf_Run( intf_thread_t *p_intf )
/* we don't create these ones yet because we perhaps won't need them */ /* we don't create these ones yet because we perhaps won't need them */
p_intf->p_sys->p_about = NULL; p_intf->p_sys->p_about = NULL;
p_intf->p_sys->p_playlist = NULL; p_intf->p_sys->p_playlist = NULL;
p_intf->p_sys->p_modules = NULL;
p_intf->p_sys->p_fileopen = NULL; p_intf->p_sys->p_fileopen = NULL;
/* store p_sys to keep an eye on it */ /* store p_sys to keep an eye on it */
...@@ -265,7 +266,7 @@ static gint GnomeManage( gpointer p_data ) ...@@ -265,7 +266,7 @@ static gint GnomeManage( gpointer p_data )
vlc_mutex_unlock( &p_intf->p_sys->change_lock ); vlc_mutex_unlock( &p_intf->p_sys->change_lock );
/* prepare to die, young man */ /* Prepare to die, young Skywalker */
gtk_main_quit(); gtk_main_quit();
return( FALSE ); return( FALSE );
} }
......
...@@ -132,14 +132,14 @@ ...@@ -132,14 +132,14 @@
<widget> <widget>
<class>GtkPixmapMenuItem</class> <class>GtkPixmapMenuItem</class>
<name>menubar_plugins</name> <name>menubar_modules</name>
<tooltip>Open the plugin manager</tooltip> <tooltip>Open the plugin manager</tooltip>
<signal> <signal>
<name>activate</name> <name>activate</name>
<handler>on_menubar_plugins_activate</handler> <handler>on_menubar_modules_activate</handler>
<last_modification_time>Sun, 11 Feb 2001 16:55:04 GMT</last_modification_time> <last_modification_time>Tue, 13 Feb 2001 17:19:41 GMT</last_modification_time>
</signal> </signal>
<label>_Plugins</label> <label>_Modules</label>
<right_justify>False</right_justify> <right_justify>False</right_justify>
<stock_icon>GNOME_STOCK_MENU_ATTACH</stock_icon> <stock_icon>GNOME_STOCK_MENU_ATTACH</stock_icon>
</widget> </widget>
...@@ -429,8 +429,8 @@ ...@@ -429,8 +429,8 @@
<lower>0</lower> <lower>0</lower>
<upper>100</upper> <upper>100</upper>
<step>1</step> <step>1</step>
<page>0</page> <page>5</page>
<page_size>0</page_size> <page_size>1</page_size>
<child> <child>
<padding>0</padding> <padding>0</padding>
<expand>False</expand> <expand>False</expand>
...@@ -631,12 +631,118 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -631,12 +631,118 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
</widget> </widget>
<widget> <widget>
<class>GtkWindow</class> <class>GnomeDialog</class>
<name>intf_modules</name>
<signal>
<name>destroy</name>
<handler>on_intf_modules_destroy</handler>
<last_modification_time>Tue, 13 Feb 2001 09:19:08 GMT</last_modification_time>
</signal>
<title>Modules</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>False</allow_grow>
<auto_shrink>False</auto_shrink>
<auto_close>False</auto_close>
<hide_on_close>False</hide_on_close>
<widget>
<class>GtkVBox</class>
<child_name>GnomeDialog:vbox</child_name>
<name>dialog-vbox1</name>
<homogeneous>False</homogeneous>
<spacing>8</spacing>
<child>
<padding>4</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkHButtonBox</class>
<child_name>GnomeDialog:action_area</child_name>
<name>dialog-action_area1</name>
<layout_style>GTK_BUTTONBOX_END</layout_style>
<spacing>8</spacing>
<child_min_width>85</child_min_width>
<child_min_height>27</child_min_height>
<child_ipad_x>7</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
<pack>GTK_PACK_END</pack>
</child>
<widget>
<class>GtkButton</class>
<name>modules_ok</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_modules_ok_clicked</handler>
<last_modification_time>Tue, 13 Feb 2001 09:21:29 GMT</last_modification_time>
</signal>
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
</widget>
<widget>
<class>GtkButton</class>
<name>modules_apply</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_modules_apply_clicked</handler>
<last_modification_time>Tue, 13 Feb 2001 09:21:25 GMT</last_modification_time>
</signal>
<stock_button>GNOME_STOCK_BUTTON_APPLY</stock_button>
</widget>
<widget>
<class>GtkButton</class>
<name>modules_cancel</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_modules_cancel_clicked</handler>
<last_modification_time>Tue, 13 Feb 2001 09:21:34 GMT</last_modification_time>
</signal>
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label12</name>
<label>Sorry, the module manager isn't functional yet. Please retry in a later version.</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
</widget>
</widget>
<widget>
<class>GnomeDialog</class>
<name>intf_playlist</name> <name>intf_playlist</name>
<signal> <signal>
<name>destroy</name> <name>destroy</name>
<handler>on_intf_playlist_destroy</handler> <handler>on_intf_playlist_destroy</handler>
<last_modification_time>Mon, 12 Feb 2001 06:02:25 GMT</last_modification_time> <last_modification_time>Tue, 13 Feb 2001 09:18:45 GMT</last_modification_time>
</signal> </signal>
<title>Playlist</title> <title>Playlist</title>
<type>GTK_WINDOW_TOPLEVEL</type> <type>GTK_WINDOW_TOPLEVEL</type>
...@@ -645,16 +751,72 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -645,16 +751,72 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
<allow_shrink>False</allow_shrink> <allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow> <allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink> <auto_shrink>False</auto_shrink>
<auto_close>False</auto_close>
<hide_on_close>False</hide_on_close>
<widget> <widget>
<class>GtkVBox</class> <class>GtkVBox</class>
<name>vbox1</name> <child_name>GnomeDialog:vbox</child_name>
<name>dialog-vbox2</name>
<homogeneous>False</homogeneous> <homogeneous>False</homogeneous>
<spacing>0</spacing> <spacing>8</spacing>
<child>
<padding>4</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkHButtonBox</class>
<child_name>GnomeDialog:action_area</child_name>
<name>dialog-action_area2</name>
<layout_style>GTK_BUTTONBOX_END</layout_style>
<spacing>8</spacing>
<child_min_width>85</child_min_width>
<child_min_height>27</child_min_height>
<child_ipad_x>7</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
<pack>GTK_PACK_END</pack>
</child>
<widget>
<class>GtkButton</class>
<name>playlist_ok</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_playlist_ok_clicked</handler>
<last_modification_time>Tue, 13 Feb 2001 09:20:38 GMT</last_modification_time>
</signal>
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label11</name>
<label>Sorry, the playlist isn't functional yet. Please retry in a later version.</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget> <widget>
<class>GtkScrolledWindow</class> <class>GtkScrolledWindow</class>
<name>scrolledwindow2</name> <name>scrolledwindow3</name>
<hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy> <hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy>
<vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy> <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
...@@ -667,18 +829,18 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -667,18 +829,18 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
<widget> <widget>
<class>GtkCList</class> <class>GtkCList</class>
<name>clist1</name> <name>clist2</name>
<can_focus>True</can_focus> <can_focus>True</can_focus>
<columns>3</columns> <columns>3</columns>
<column_widths>189,80,80</column_widths> <column_widths>211,49,35</column_widths>
<selection_mode>GTK_SELECTION_SINGLE</selection_mode> <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
<show_titles>True</show_titles> <show_titles>False</show_titles>
<shadow_type>GTK_SHADOW_IN</shadow_type> <shadow_type>GTK_SHADOW_IN</shadow_type>
<widget> <widget>
<class>GtkLabel</class> <class>GtkLabel</class>
<child_name>CList:title</child_name> <child_name>CList:title</child_name>
<name>label3</name> <name>label8</name>
<label>Name</label> <label>Name</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
...@@ -691,7 +853,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -691,7 +853,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
<widget> <widget>
<class>GtkLabel</class> <class>GtkLabel</class>
<child_name>CList:title</child_name> <child_name>CList:title</child_name>
<name>label4</name> <name>label9</name>
<label>Type</label> <label>Type</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
...@@ -704,7 +866,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -704,7 +866,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
<widget> <widget>
<class>GtkLabel</class> <class>GtkLabel</class>
<child_name>CList:title</child_name> <child_name>CList:title</child_name>
<name>label5</name> <name>label10</name>
<label>Length</label> <label>Length</label>
<justify>GTK_JUSTIFY_CENTER</justify> <justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap> <wrap>False</wrap>
...@@ -715,72 +877,6 @@ Henri Fallon &lt;henri@via.ecp.fr&gt; ...@@ -715,72 +877,6 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
</widget> </widget>
</widget> </widget>
</widget> </widget>
<widget>
<class>GtkHSeparator</class>
<name>hseparator1</name>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
</child>
</widget>
<widget>
<class>GtkHBox</class>
<name>hbox1</name>
<homogeneous>True</homogeneous>
<spacing>0</spacing>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
<widget>
<class>GtkButton</class>
<name>button1</name>
<can_focus>True</can_focus>
<label>Wazaaaa !</label>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkButton</class>
<name>playlist_close</name>
<can_focus>True</can_focus>
<signal>
<name>clicked</name>
<handler>on_playlist_close_clicked</handler>
<last_modification_time>Mon, 12 Feb 2001 06:19:17 GMT</last_modification_time>
</signal>
<stock_button>GNOME_STOCK_BUTTON_CLOSE</stock_button>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkButton</class>
<name>playlist_help</name>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_HELP</stock_button>
<relief>GTK_RELIEF_NORMAL</relief>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
</widget>
</widget> </widget>
</widget> </widget>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include "common.h" /* boolean_t, byte_t */ #include "common.h" /* boolean_t, byte_t */
#include "threads.h" #include "threads.h"
#include "mtime.h" #include "mtime.h"
#include "tests.h"
#include "audio_output.h" #include "audio_output.h"
......
/*****************************************************************************
* intf_x11.c: X11 interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: intf_x11.c,v 1.7 2001/01/15 06:18:23 sam Exp $
*
* Authors:
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "defs.h"
#include <errno.h> /* ENOMEM */
#include <stdlib.h> /* free() */
#include <string.h> /* strerror() */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include "config.h"
#include "common.h"
#include "threads.h"
#include "mtime.h"
#include "plugins.h"
#include "stream_control.h"
#include "input_ext-intf.h"
#include "video.h"
#include "video_output.h"
#include "intf_msg.h"
#include "interface.h"
#include "main.h"
/*****************************************************************************
* intf_sys_t: description and status of X11 interface
*****************************************************************************/
typedef struct intf_sys_s
{
/* X11 generic properties */
Display * p_display; /* X11 display pointer */
int i_screen; /* X11 screen */
Atom wm_protocols;
Atom wm_delete_window;
/* Main window properties */
Window window; /* main window */
GC gc; /* graphic context for main window */
int i_width; /* width of main window */
int i_height; /* height of main window */
Colormap colormap; /* colormap used (8bpp only) */
/* Screen saver properties */
int i_ss_count; /* enabling/disabling count */
int i_ss_timeout; /* timeout */
int i_ss_interval; /* interval between changes */
int i_ss_blanking; /* blanking mode */
int i_ss_exposure; /* exposure mode */
/* Mouse pointer properties */
boolean_t b_mouse; /* is the mouse pointer displayed ? */
} intf_sys_t;
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static int X11CreateWindow ( intf_thread_t *p_intf );
static void X11DestroyWindow ( intf_thread_t *p_intf );
static void X11ManageWindow ( intf_thread_t *p_intf );
static void X11EnableScreenSaver ( intf_thread_t *p_intf );
static void X11DisableScreenSaver ( intf_thread_t *p_intf );
static void X11TogglePointer ( intf_thread_t *p_intf );
/*****************************************************************************
* intf_X11Create: initialize and create window
*****************************************************************************/
int intf_X11Create( intf_thread_t *p_intf )
{
char *psz_display;
/* Allocate instance and initialize some members */
p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
if( p_intf->p_sys == NULL )
{
intf_ErrMsg("error: %s", strerror(ENOMEM));
return( 1 );
}
/* Open display, unsing 'vlc_display' or DISPLAY environment variable */
psz_display = XDisplayName( main_GetPszVariable( VOUT_DISPLAY_VAR, NULL ) );
p_intf->p_sys->p_display = XOpenDisplay( psz_display );
if( !p_intf->p_sys->p_display ) /* error */
{
intf_ErrMsg("error: can't open display %s", psz_display );
free( p_intf->p_sys );
return( 1 );
}
p_intf->p_sys->i_screen = DefaultScreen( p_intf->p_sys->p_display );
/* Spawn base window - this window will include the video output window,
* but also command buttons, subtitles and other indicators */
if( X11CreateWindow( p_intf ) )
{
intf_ErrMsg("error: can't create interface window" );
XCloseDisplay( p_intf->p_sys->p_display );
free( p_intf->p_sys );
return( 1 );
}
/* Spawn video output thread */
if( p_main->b_video )
{
p_intf->p_vout = vout_CreateThread( psz_display, p_intf->p_sys->window,
p_intf->p_sys->i_width,
p_intf->p_sys->i_height, NULL, 0,
(void *)&p_intf->p_sys->colormap );
if( p_intf->p_vout == NULL ) /* error */
{
intf_ErrMsg("error: can't create video output thread" );
X11DestroyWindow( p_intf );
XCloseDisplay( p_intf->p_sys->p_display );
free( p_intf->p_sys );
return( 1 );
}
}
p_intf->p_sys->b_mouse = 1;
/* bind keys */
intf_AssignNormalKeys( p_intf );
/* Disable screen saver and return */
p_intf->p_sys->i_ss_count = 1;
X11DisableScreenSaver( p_intf );
return( 0 );
}
/*****************************************************************************
* intf_X11Destroy: destroy interface window
*****************************************************************************/
void intf_X11Destroy( intf_thread_t *p_intf )
{
/* Enable screen saver */
X11EnableScreenSaver( p_intf );
/* Close input thread, if any (blocking) */
if( p_intf->p_input )
{
input_DestroyThread( p_intf->p_input, NULL );
}
/* Close video output thread, if any (blocking) */
if( p_intf->p_vout )
{
vout_DestroyThread( p_intf->p_vout, NULL );
}
/* Close main window and display */
X11DestroyWindow( p_intf );
XCloseDisplay( p_intf->p_sys->p_display );
/* Destroy structure */
free( p_intf->p_sys );
}
/*****************************************************************************
* intf_X11Manage: event loop
*****************************************************************************/
void intf_X11Manage( intf_thread_t *p_intf )
{
/* Manage main window */
X11ManageWindow( p_intf );
}
/* following functions are local */
/*****************************************************************************
* X11CreateWindow: open and set-up X11 main window
*****************************************************************************/
static int X11CreateWindow( intf_thread_t *p_intf )
{
XSizeHints xsize_hints;
XSetWindowAttributes xwindow_attributes;
XGCValues xgcvalues;
XEvent xevent;
boolean_t b_expose;
boolean_t b_configure_notify;
boolean_t b_map_notify;
/* Set main window's size */
p_intf->p_sys->i_width = main_GetIntVariable( VOUT_WIDTH_VAR,
VOUT_WIDTH_DEFAULT );
p_intf->p_sys->i_height = main_GetIntVariable( VOUT_HEIGHT_VAR,
VOUT_HEIGHT_DEFAULT );
/* Prepare window manager hints and properties */
xsize_hints.base_width = p_intf->p_sys->i_width;
xsize_hints.base_height = p_intf->p_sys->i_height;
xsize_hints.flags = PSize;
p_intf->p_sys->wm_protocols = XInternAtom( p_intf->p_sys->p_display,
"WM_PROTOCOLS", True );
p_intf->p_sys->wm_delete_window = XInternAtom( p_intf->p_sys->p_display,
"WM_DELETE_WINDOW", True );
/* Prepare window attributes */
xwindow_attributes.backing_store = Always; /* save the hidden part */
xwindow_attributes.background_pixel = WhitePixel( p_intf->p_sys->p_display,
p_intf->p_sys->i_screen );
xwindow_attributes.event_mask = ExposureMask | StructureNotifyMask;
/* Create the window and set hints - the window must receive ConfigureNotify
* events, and, until it is displayed, Expose and MapNotify events. */
p_intf->p_sys->window =
XCreateWindow( p_intf->p_sys->p_display,
DefaultRootWindow( p_intf->p_sys->p_display ),
0, 0,
p_intf->p_sys->i_width, p_intf->p_sys->i_height, 1,
0, InputOutput, 0,
CWBackingStore | CWBackPixel | CWEventMask,
&xwindow_attributes );
/* Set window manager hints and properties: size hints, command,
* window's name, and accepted protocols */
XSetWMNormalHints( p_intf->p_sys->p_display, p_intf->p_sys->window,
&xsize_hints );
XSetCommand( p_intf->p_sys->p_display, p_intf->p_sys->window,
p_main->ppsz_argv, p_main->i_argc );
XStoreName( p_intf->p_sys->p_display, p_intf->p_sys->window, VOUT_TITLE );
if( (p_intf->p_sys->wm_protocols == None) /* use WM_DELETE_WINDOW */
|| (p_intf->p_sys->wm_delete_window == None)
|| !XSetWMProtocols( p_intf->p_sys->p_display, p_intf->p_sys->window,
&p_intf->p_sys->wm_delete_window, 1 ) )
{
/* WM_DELETE_WINDOW is not supported by window manager */
intf_Msg("intf error: missing or bad window manager - please exit program kindly.");
}
/* Creation of a graphic context that doesn't generate a GraphicsExpose
* event when using functions like XCopyArea */
xgcvalues.graphics_exposures = False;
p_intf->p_sys->gc = XCreateGC( p_intf->p_sys->p_display, p_intf->p_sys->window,
GCGraphicsExposures, &xgcvalues);
/* Send orders to server, and wait until window is displayed - three
* events must be received: a MapNotify event, an Expose event allowing
* drawing in the window, and a ConfigureNotify to get the window
* dimensions. Once those events have been received, only ConfigureNotify
* events need to be received. */
b_expose = 0;
b_configure_notify = 0;
b_map_notify = 0;
XMapWindow( p_intf->p_sys->p_display, p_intf->p_sys->window);
do
{
XNextEvent( p_intf->p_sys->p_display, &xevent);
if( (xevent.type == Expose)
&& (xevent.xexpose.window == p_intf->p_sys->window) )
{
b_expose = 1;
}
else if( (xevent.type == MapNotify)
&& (xevent.xmap.window == p_intf->p_sys->window) )
{
b_map_notify = 1;
}
else if( (xevent.type == ConfigureNotify)
&& (xevent.xconfigure.window == p_intf->p_sys->window) )
{
b_configure_notify = 1;
p_intf->p_sys->i_width = xevent.xconfigure.width;
p_intf->p_sys->i_height = xevent.xconfigure.height;
}
} while( !( b_expose && b_configure_notify && b_map_notify ) );
XSelectInput( p_intf->p_sys->p_display, p_intf->p_sys->window,
StructureNotifyMask | KeyPressMask | ButtonPressMask );
if( XDefaultDepth(p_intf->p_sys->p_display, p_intf->p_sys->i_screen) == 8 )
{
/* Allocate a new palette */
p_intf->p_sys->colormap = XCreateColormap( p_intf->p_sys->p_display,
DefaultRootWindow( p_intf->p_sys->p_display ),
DefaultVisual( p_intf->p_sys->p_display,
p_intf->p_sys->i_screen ),
AllocAll );
xwindow_attributes.colormap = p_intf->p_sys->colormap;
XChangeWindowAttributes( p_intf->p_sys->p_display,
p_intf->p_sys->window,
CWColormap, &xwindow_attributes );
}
/* At this stage, the window is open, displayed, and ready to receive data */
return( 0 );
}
/*****************************************************************************
* X11DestroyWindow: destroy X11 main window
*****************************************************************************/
static void X11DestroyWindow( intf_thread_t *p_intf )
{
XUnmapWindow( p_intf->p_sys->p_display, p_intf->p_sys->window );
XFreeGC( p_intf->p_sys->p_display, p_intf->p_sys->gc );
XDestroyWindow( p_intf->p_sys->p_display, p_intf->p_sys->window );
}
/*****************************************************************************
* X11ManageWindow: manage X11 main window
*****************************************************************************/
static void X11ManageWindow( intf_thread_t *p_intf )
{
XEvent xevent; /* X11 event */
boolean_t b_resized; /* window has been resized */
char i_key; /* ISO Latin-1 key */
/* Handle X11 events: ConfigureNotify events are parsed to know if the
* output window's size changed, MapNotify and UnmapNotify to know if the
* window is mapped (and if the display is useful), and ClientMessages
* to intercept window destruction requests */
b_resized = 0;
while( XCheckWindowEvent( p_intf->p_sys->p_display, p_intf->p_sys->window,
StructureNotifyMask | KeyPressMask |
ButtonPressMask, &xevent ) == True )
{
/* ConfigureNotify event: prepare */
if( (xevent.type == ConfigureNotify)
&& ((xevent.xconfigure.width != p_intf->p_sys->i_width)
|| (xevent.xconfigure.height != p_intf->p_sys->i_height)) )
{
/* Update dimensions */
b_resized = 1;
p_intf->p_sys->i_width = xevent.xconfigure.width;
p_intf->p_sys->i_height = xevent.xconfigure.height;
}
/* MapNotify event: change window status and disable screen saver */
else if( xevent.type == MapNotify)
{
if( (p_intf->p_vout != NULL) && !p_intf->p_vout->b_active )
{
X11DisableScreenSaver( p_intf );
p_intf->p_vout->b_active = 1;
}
}
/* UnmapNotify event: change window status and enable screen saver */
else if( xevent.type == UnmapNotify )
{
if( (p_intf->p_vout != NULL) && p_intf->p_vout->b_active )
{
X11EnableScreenSaver( p_intf );
p_intf->p_vout->b_active = 0;
}
}
/* Keyboard event */
else if( xevent.type == KeyPress )
{
if( XLookupString( &xevent.xkey, &i_key, 1, NULL, NULL ) )
{
if( intf_ProcessKey( p_intf, i_key ) )
{
intf_DbgMsg("unhandled key '%c' (%i)", (char) i_key, i_key );
}
}
}
/* Mouse click */
else if( xevent.type == ButtonPress )
{
switch( ((XButtonEvent *)&xevent)->button )
{
case Button1:
/* in this part we will eventually manage
* clicks for DVD navigation for instance */
break;
case Button2:
X11TogglePointer( p_intf );
break;
case Button3:
vlc_mutex_lock( &p_intf->p_vout->change_lock );
p_intf->p_vout->b_interface = !p_intf->p_vout->b_interface;
p_intf->p_vout->i_changes |= VOUT_INTF_CHANGE;
vlc_mutex_unlock( &p_intf->p_vout->change_lock );
break;
}
}
#ifdef DEBUG
/* Other event */
else
{
intf_DbgMsg( "%p -> unhandled event type %d received",
p_intf, xevent.type );
}
#endif
}
/* ClientMessage event - only WM_PROTOCOLS with WM_DELETE_WINDOW data
* are handled - according to the man pages, the format is always 32
* in this case */
while( XCheckTypedEvent( p_intf->p_sys->p_display,
ClientMessage, &xevent ) )
{
if( (xevent.xclient.message_type == p_intf->p_sys->wm_protocols)
&& (xevent.xclient.data.l[0] == p_intf->p_sys->wm_delete_window ) )
{
p_intf->b_die = 1;
}
else
{
intf_DbgMsg( "%p -> unhandled ClientMessage received", p_intf );
}
}
/*
* Handle vout or interface windows resizing
*/
if( p_intf->p_vout != NULL )
{
if( b_resized )
{
/* If interface window has been resized, change vout size */
intf_DbgMsg( "resizing output window" );
vlc_mutex_lock( &p_intf->p_vout->change_lock );
p_intf->p_vout->i_width = p_intf->p_sys->i_width;
p_intf->p_vout->i_height = p_intf->p_sys->i_height;
p_intf->p_vout->i_changes |= VOUT_SIZE_CHANGE;
vlc_mutex_unlock( &p_intf->p_vout->change_lock );
}
else if( (p_intf->p_vout->i_width != p_intf->p_sys->i_width) ||
(p_intf->p_vout->i_height != p_intf->p_sys->i_height) )
{
/* If video output size has changed, change interface window size */
intf_DbgMsg( "resizing output window" );
p_intf->p_sys->i_width = p_intf->p_vout->i_width;
p_intf->p_sys->i_height = p_intf->p_vout->i_height;
XResizeWindow( p_intf->p_sys->p_display, p_intf->p_sys->window,
p_intf->p_sys->i_width, p_intf->p_sys->i_height );
}
}
}
/*****************************************************************************
* X11EnableScreenSaver: enable screen saver
*****************************************************************************
* This function enable the screen saver on a display after it had been
* disabled by XDisableScreenSaver. Both functions use a counter mechanism to
* know wether the screen saver can be activated or not: if n successive calls
* are made to XDisableScreenSaver, n successive calls to XEnableScreenSaver
* will be required before the screen saver could effectively be activated.
*****************************************************************************/
void X11EnableScreenSaver( intf_thread_t *p_intf )
{
if( p_intf->p_sys->i_ss_count++ == 0 )
{
intf_DbgMsg( "intf: enabling screen saver" );
XSetScreenSaver( p_intf->p_sys->p_display, p_intf->p_sys->i_ss_timeout,
p_intf->p_sys->i_ss_interval, p_intf->p_sys->i_ss_blanking,
p_intf->p_sys->i_ss_exposure );
}
}
/*****************************************************************************
* X11DisableScreenSaver: disable screen saver
*****************************************************************************
* See XEnableScreenSaver
*****************************************************************************/
void X11DisableScreenSaver( intf_thread_t *p_intf )
{
if( --p_intf->p_sys->i_ss_count == 0 )
{
/* Save screen saver informations */
XGetScreenSaver( p_intf->p_sys->p_display, &p_intf->p_sys->i_ss_timeout,
&p_intf->p_sys->i_ss_interval, &p_intf->p_sys->i_ss_blanking,
&p_intf->p_sys->i_ss_exposure );
/* Disable screen saver */
intf_DbgMsg("intf: disabling screen saver");
XSetScreenSaver( p_intf->p_sys->p_display, 0,
p_intf->p_sys->i_ss_interval, p_intf->p_sys->i_ss_blanking,
p_intf->p_sys->i_ss_exposure );
}
}
/*****************************************************************************
* X11TogglePointer: hide or show the mouse pointer
*****************************************************************************
* This function hides the X pointer if it is visible by putting it at
* coordinates (32,32) and setting the pointer sprite to a blank one. To
* show it again, we disable the sprite and restore the original coordinates.
*****************************************************************************/
void X11TogglePointer( intf_thread_t *p_intf )
{
static Cursor cursor;
static boolean_t b_cursor = 0;
if( p_intf->p_sys->b_mouse )
{
p_intf->p_sys->b_mouse = 0;
if( !b_cursor )
{
XColor color;
Pixmap blank = XCreatePixmap( p_intf->p_sys->p_display,
DefaultRootWindow(p_intf->p_sys->p_display),
1, 1, 1 );
XParseColor( p_intf->p_sys->p_display,
XCreateColormap( p_intf->p_sys->p_display,
DefaultRootWindow(
p_intf->p_sys->p_display ),
DefaultVisual(
p_intf->p_sys->p_display,
p_intf->p_sys->i_screen ),
AllocNone ),
"black", &color );
cursor = XCreatePixmapCursor( p_intf->p_sys->p_display,
blank, blank, &color, &color, 1, 1 );
b_cursor = 1;
}
XDefineCursor( p_intf->p_sys->p_display,
p_intf->p_sys->window, cursor );
}
else
{
p_intf->p_sys->b_mouse = 1;
XUndefineCursor( p_intf->p_sys->p_display, p_intf->p_sys->window );
}
}
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
* vout_x11.c: X11 video output display method * vout_x11.c: X11 video output display method
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: vout_x11.c,v 1.9 2001/01/23 13:22:58 massiot Exp $ * $Id: vout_x11.c,v 1.10 2001/02/14 07:48:18 sam Exp $
* *
* Authors: * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -40,17 +41,20 @@ ...@@ -40,17 +41,20 @@
#include <sys/shm.h> /* shmget(), shmctl() */ #include <sys/shm.h> /* shmget(), shmctl() */
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/extensions/XShm.h> #include <X11/extensions/XShm.h>
#include "config.h" #include "config.h"
#include "common.h" #include "common.h"
#include "threads.h" #include "threads.h"
#include "mtime.h" #include "mtime.h"
#include "plugins.h" #include "tests.h"
#include "modules.h"
#include "video.h" #include "video.h"
#include "video_output.h" #include "video_output.h"
#include "interface.h"
#include "intf_msg.h" #include "intf_msg.h"
/***************************************************************************** /*****************************************************************************
...@@ -78,12 +82,39 @@ typedef struct vout_sys_s ...@@ -78,12 +82,39 @@ typedef struct vout_sys_s
/* Display buffers and shared memory information */ /* Display buffers and shared memory information */
XImage * p_ximage[2]; /* XImage pointer */ XImage * p_ximage[2]; /* XImage pointer */
XShmSegmentInfo shm_info[2]; /* shared memory zone information */ XShmSegmentInfo shm_info[2]; /* shared memory zone information */
/* X11 generic properties */
Atom wm_protocols;
Atom wm_delete_window;
int i_width; /* width of main window */
int i_height; /* height of main window */
/* Screen saver properties */
int i_ss_count; /* enabling/disabling count */
int i_ss_timeout; /* timeout */
int i_ss_interval; /* interval between changes */
int i_ss_blanking; /* blanking mode */
int i_ss_exposure; /* exposure mode */
/* Mouse pointer properties */
boolean_t b_mouse; /* is the mouse pointer displayed ? */
} vout_sys_t; } vout_sys_t;
/***************************************************************************** /*****************************************************************************
* Local prototypes * Local prototypes
*****************************************************************************/ *****************************************************************************/
static int X11OpenDisplay ( vout_thread_t *p_vout, char *psz_display, Window root_window, void *p_data ); static int vout_Probe ( probedata_t *p_data );
static int vout_Create ( struct vout_thread_s * );
static int vout_Init ( struct vout_thread_s * );
static void vout_End ( struct vout_thread_s * );
static void vout_Destroy ( struct vout_thread_s * );
static int vout_Manage ( struct vout_thread_s * );
static void vout_Display ( struct vout_thread_s * );
static void vout_SetPalette( struct vout_thread_s *, u16*, u16*, u16*, u16* );
static int X11OpenDisplay ( vout_thread_t *p_vout );
static void X11CloseDisplay ( vout_thread_t *p_vout ); static void X11CloseDisplay ( vout_thread_t *p_vout );
static int X11CreateWindow ( vout_thread_t *p_vout ); static int X11CreateWindow ( vout_thread_t *p_vout );
static void X11DestroyWindow ( vout_thread_t *p_vout ); static void X11DestroyWindow ( vout_thread_t *p_vout );
...@@ -95,14 +126,45 @@ static void X11DestroyShmImage ( vout_thread_t *p_vout, XImage *p_ximage, ...@@ -95,14 +126,45 @@ static void X11DestroyShmImage ( vout_thread_t *p_vout, XImage *p_ximage,
XShmSegmentInfo *p_shm_info ); XShmSegmentInfo *p_shm_info );
/***************************************************************************** /*****************************************************************************
* vout_X11Create: allocate X11 video thread output method * Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
*****************************************************************************/
void vout_getfunctions( function_list_t * p_function_list )
{
p_function_list->pf_probe = vout_Probe;
p_function_list->functions.vout.pf_create = vout_Create;
p_function_list->functions.vout.pf_init = vout_Init;
p_function_list->functions.vout.pf_end = vout_End;
p_function_list->functions.vout.pf_destroy = vout_Destroy;
p_function_list->functions.vout.pf_manage = vout_Manage;
p_function_list->functions.vout.pf_display = vout_Display;
p_function_list->functions.vout.pf_setpalette = vout_SetPalette;
}
/*****************************************************************************
* vout_Probe: probe the video driver and return a score
*****************************************************************************
* This function tries to initialize SDL and returns a score to the
* plugin manager so that it can select the best plugin.
*****************************************************************************/
static int vout_Probe( probedata_t *p_data )
{
if( TestMethod( VOUT_METHOD_VAR, "x11" ) )
{
return( 999 );
}
return( 50 );
}
/*****************************************************************************
* vout_Create: allocate X11 video thread output method
***************************************************************************** *****************************************************************************
* This function allocate and initialize a X11 vout method. It uses some of the * This function allocate and initialize a X11 vout method. It uses some of the
* vout properties to choose the window size, and change them according to the * vout properties to choose the window size, and change them according to the
* actual properties of the display. * actual properties of the display.
*****************************************************************************/ *****************************************************************************/
int vout_X11Create( vout_thread_t *p_vout, char *psz_display, static int vout_Create( vout_thread_t *p_vout )
int i_root_window, void *p_data )
{ {
/* Allocate structure */ /* Allocate structure */
p_vout->p_sys = malloc( sizeof( vout_sys_t ) ); p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
...@@ -116,7 +178,7 @@ int vout_X11Create( vout_thread_t *p_vout, char *psz_display, ...@@ -116,7 +178,7 @@ int vout_X11Create( vout_thread_t *p_vout, char *psz_display,
* Since XLib is usually not thread-safe, we can't use the same display * Since XLib is usually not thread-safe, we can't use the same display
* pointer than the interface or another thread. However, the root window * pointer than the interface or another thread. However, the root window
* id is still valid. */ * id is still valid. */
if( X11OpenDisplay( p_vout, psz_display, i_root_window, p_data ) ) if( X11OpenDisplay( p_vout ) )
{ {
intf_ErrMsg("error: can't initialize X11 display" ); intf_ErrMsg("error: can't initialize X11 display" );
free( p_vout->p_sys ); free( p_vout->p_sys );
...@@ -127,12 +189,12 @@ int vout_X11Create( vout_thread_t *p_vout, char *psz_display, ...@@ -127,12 +189,12 @@ int vout_X11Create( vout_thread_t *p_vout, char *psz_display,
} }
/***************************************************************************** /*****************************************************************************
* vout_X11Init: initialize X11 video thread output method * vout_Init: initialize X11 video thread output method
***************************************************************************** *****************************************************************************
* This function create the XImages needed by the output thread. It is called * This function create the XImages needed by the output thread. It is called
* at the beginning of the thread, but also each time the window is resized. * at the beginning of the thread, but also each time the window is resized.
*****************************************************************************/ *****************************************************************************/
int vout_X11Init( vout_thread_t *p_vout ) static int vout_Init( vout_thread_t *p_vout )
{ {
int i_err; int i_err;
...@@ -189,12 +251,12 @@ int vout_X11Init( vout_thread_t *p_vout ) ...@@ -189,12 +251,12 @@ int vout_X11Init( vout_thread_t *p_vout )
} }
/***************************************************************************** /*****************************************************************************
* vout_X11End: terminate X11 video thread output method * vout_End: terminate X11 video thread output method
***************************************************************************** *****************************************************************************
* Destroy the X11 XImages created by vout_X11Init. It is called at the end of * Destroy the X11 XImages created by vout_Init. It is called at the end of
* the thread, but also each time the window is resized. * the thread, but also each time the window is resized.
*****************************************************************************/ *****************************************************************************/
void vout_X11End( vout_thread_t *p_vout ) static void vout_End( vout_thread_t *p_vout )
{ {
if( p_vout->p_sys->b_shm ) /* Shm XImages... */ if( p_vout->p_sys->b_shm ) /* Shm XImages... */
{ {
...@@ -211,24 +273,24 @@ void vout_X11End( vout_thread_t *p_vout ) ...@@ -211,24 +273,24 @@ void vout_X11End( vout_thread_t *p_vout )
} }
/***************************************************************************** /*****************************************************************************
* vout_X11Destroy: destroy X11 video thread output method * vout_Destroy: destroy X11 video thread output method
***************************************************************************** *****************************************************************************
* Terminate an output method created by vout_CreateOutputMethod * Terminate an output method created by vout_CreateOutputMethod
*****************************************************************************/ *****************************************************************************/
void vout_X11Destroy( vout_thread_t *p_vout ) static void vout_Destroy( vout_thread_t *p_vout )
{ {
X11CloseDisplay( p_vout ); X11CloseDisplay( p_vout );
free( p_vout->p_sys ); free( p_vout->p_sys );
} }
/***************************************************************************** /*****************************************************************************
* vout_X11Manage: handle X11 events * vout_Manage: handle X11 events
***************************************************************************** *****************************************************************************
* This function should be called regularly by video output thread. It manages * This function should be called regularly by video output thread. It manages
* X11 events and allows window resizing. It returns a non null value on * X11 events and allows window resizing. It returns a non null value on
* error. * error.
*****************************************************************************/ *****************************************************************************/
int vout_X11Manage( vout_thread_t *p_vout ) static int vout_Manage( vout_thread_t *p_vout )
{ {
/* /*
* Color/Grayscale or gamma change: in 8bpp, just change the colormap * Color/Grayscale or gamma change: in 8bpp, just change the colormap
...@@ -252,10 +314,10 @@ int vout_X11Manage( vout_thread_t *p_vout ) ...@@ -252,10 +314,10 @@ int vout_X11Manage( vout_thread_t *p_vout )
p_vout->i_width, p_vout->i_height ); p_vout->i_width, p_vout->i_height );
/* Destroy XImages to change their size */ /* Destroy XImages to change their size */
vout_X11End( p_vout ); vout_End( p_vout );
/* Recreate XImages. If SysInit failed, the thread can't go on. */ /* Recreate XImages. If SysInit failed, the thread can't go on. */
if( vout_X11Init( p_vout ) ) if( vout_Init( p_vout ) )
{ {
intf_ErrMsg("error: can't resize display"); intf_ErrMsg("error: can't resize display");
return( 1 ); return( 1 );
...@@ -272,12 +334,12 @@ int vout_X11Manage( vout_thread_t *p_vout ) ...@@ -272,12 +334,12 @@ int vout_X11Manage( vout_thread_t *p_vout )
} }
/***************************************************************************** /*****************************************************************************
* vout_X11Display: displays previously rendered output * vout_Display: displays previously rendered output
***************************************************************************** *****************************************************************************
* This function send the currently rendered image to X11 server, wait until * This function send the currently rendered image to X11 server, wait until
* it is displayed and switch the two rendering buffer, preparing next frame. * it is displayed and switch the two rendering buffer, preparing next frame.
*****************************************************************************/ *****************************************************************************/
void vout_X11Display( vout_thread_t *p_vout ) static void vout_Display( vout_thread_t *p_vout )
{ {
if( p_vout->p_sys->b_shm) /* XShm is used */ if( p_vout->p_sys->b_shm) /* XShm is used */
{ {
...@@ -305,14 +367,14 @@ void vout_X11Display( vout_thread_t *p_vout ) ...@@ -305,14 +367,14 @@ void vout_X11Display( vout_thread_t *p_vout )
} }
/***************************************************************************** /*****************************************************************************
* vout_X11SetPalette: sets an 8 bpp palette * vout_SetPalette: sets an 8 bpp palette
***************************************************************************** *****************************************************************************
* This function sets the palette given as an argument. It does not return * This function sets the palette given as an argument. It does not return
* anything, but could later send information on which colors it was unable * anything, but could later send information on which colors it was unable
* to set. * to set.
*****************************************************************************/ *****************************************************************************/
void vout_X11SetPalette( p_vout_thread_t p_vout, static void vout_SetPalette( p_vout_thread_t p_vout,
u16 *red, u16 *green, u16 *blue, u16 *transp ) u16 *red, u16 *green, u16 *blue, u16 *transp )
{ {
int i; int i;
XColor color[255]; XColor color[255];
...@@ -343,7 +405,7 @@ void vout_X11SetPalette( p_vout_thread_t p_vout, ...@@ -343,7 +405,7 @@ void vout_X11SetPalette( p_vout_thread_t p_vout,
* Create a window according to video output given size, and set other * Create a window according to video output given size, and set other
* properties according to the display properties. * properties according to the display properties.
*****************************************************************************/ *****************************************************************************/
static int X11OpenDisplay( vout_thread_t *p_vout, char *psz_display, Window root_window, void *p_data ) static int X11OpenDisplay( vout_thread_t *p_vout )
{ {
XPixmapFormatValues * p_xpixmap_format; /* pixmap formats */ XPixmapFormatValues * p_xpixmap_format; /* pixmap formats */
XVisualInfo * p_xvisual; /* visuals informations */ XVisualInfo * p_xvisual; /* visuals informations */
...@@ -698,4 +760,474 @@ static void X11DestroyShmImage( vout_thread_t *p_vout, XImage *p_ximage, ...@@ -698,4 +760,474 @@ static void X11DestroyShmImage( vout_thread_t *p_vout, XImage *p_ximage,
} }
} }
/*****************************************************************************
* Local prototypes
*****************************************************************************/
static int X11CreateWindow ( intf_thread_t *p_intf );
static void X11DestroyWindow ( intf_thread_t *p_intf );
static void X11ManageWindow ( intf_thread_t *p_intf );
static void X11EnableScreenSaver ( intf_thread_t *p_intf );
static void X11DisableScreenSaver ( intf_thread_t *p_intf );
static void X11TogglePointer ( intf_thread_t *p_intf );
/*****************************************************************************
* intf_X11Create: initialize and create window
*****************************************************************************/
int intf_X11Create( intf_thread_t *p_intf )
{
char *psz_display;
/* Allocate instance and initialize some members */
p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
if( p_intf->p_sys == NULL )
{
intf_ErrMsg("error: %s", strerror(ENOMEM));
return( 1 );
}
/* Open display, unsing 'vlc_display' or DISPLAY environment variable */
psz_display = XDisplayName( main_GetPszVariable( VOUT_DISPLAY_VAR, NULL ) );
p_intf->p_sys->p_display = XOpenDisplay( psz_display );
if( !p_intf->p_sys->p_display ) /* error */
{
intf_ErrMsg("error: can't open display %s", psz_display );
free( p_intf->p_sys );
return( 1 );
}
p_intf->p_sys->i_screen = DefaultScreen( p_intf->p_sys->p_display );
/* Spawn base window - this window will include the video output window,
* but also command buttons, subtitles and other indicators */
if( X11CreateWindow( p_intf ) )
{
intf_ErrMsg("error: can't create interface window" );
XCloseDisplay( p_intf->p_sys->p_display );
free( p_intf->p_sys );
return( 1 );
}
/* Spawn video output thread */
if( p_main->b_video )
{
p_intf->p_vout = vout_CreateThread( psz_display, p_intf->p_sys->window,
p_intf->p_sys->i_width,
p_intf->p_sys->i_height, NULL, 0,
(void *)&p_intf->p_sys->colormap );
if( p_intf->p_vout == NULL ) /* error */
{
intf_ErrMsg("error: can't create video output thread" );
X11DestroyWindow( p_intf );
XCloseDisplay( p_intf->p_sys->p_display );
free( p_intf->p_sys );
return( 1 );
}
}
p_intf->p_sys->b_mouse = 1;
/* bind keys */
intf_AssignNormalKeys( p_intf );
/* Disable screen saver and return */
p_intf->p_sys->i_ss_count = 1;
X11DisableScreenSaver( p_intf );
return( 0 );
}
/*****************************************************************************
* intf_X11Destroy: destroy interface window
*****************************************************************************/
void intf_X11Destroy( intf_thread_t *p_intf )
{
/* Enable screen saver */
X11EnableScreenSaver( p_intf );
/* Close input thread, if any (blocking) */
if( p_intf->p_input )
{
input_DestroyThread( p_intf->p_input, NULL );
}
/* Close video output thread, if any (blocking) */
if( p_intf->p_vout )
{
vout_DestroyThread( p_intf->p_vout, NULL );
}
/* Close main window and display */
X11DestroyWindow( p_intf );
XCloseDisplay( p_intf->p_sys->p_display );
/* Destroy structure */
free( p_intf->p_sys );
}
/*****************************************************************************
* intf_X11Manage: event loop
*****************************************************************************/
void intf_X11Manage( intf_thread_t *p_intf )
{
/* Manage main window */
X11ManageWindow( p_intf );
}
/* following functions are local */
/*****************************************************************************
* X11CreateWindow: open and set-up X11 main window
*****************************************************************************/
static int X11CreateWindow( intf_thread_t *p_intf )
{
XSizeHints xsize_hints;
XSetWindowAttributes xwindow_attributes;
XGCValues xgcvalues;
XEvent xevent;
boolean_t b_expose;
boolean_t b_configure_notify;
boolean_t b_map_notify;
/* Set main window's size */
p_intf->p_sys->i_width = main_GetIntVariable( VOUT_WIDTH_VAR,
VOUT_WIDTH_DEFAULT );
p_intf->p_sys->i_height = main_GetIntVariable( VOUT_HEIGHT_VAR,
VOUT_HEIGHT_DEFAULT );
/* Prepare window manager hints and properties */
xsize_hints.base_width = p_intf->p_sys->i_width;
xsize_hints.base_height = p_intf->p_sys->i_height;
xsize_hints.flags = PSize;
p_intf->p_sys->wm_protocols = XInternAtom( p_intf->p_sys->p_display,
"WM_PROTOCOLS", True );
p_intf->p_sys->wm_delete_window = XInternAtom( p_intf->p_sys->p_display,
"WM_DELETE_WINDOW", True );
/* Prepare window attributes */
xwindow_attributes.backing_store = Always; /* save the hidden part */
xwindow_attributes.background_pixel = WhitePixel( p_intf->p_sys->p_display,
p_intf->p_sys->i_screen );
xwindow_attributes.event_mask = ExposureMask | StructureNotifyMask;
/* Create the window and set hints - the window must receive ConfigureNotify
* events, and, until it is displayed, Expose and MapNotify events. */
p_intf->p_sys->window =
XCreateWindow( p_intf->p_sys->p_display,
DefaultRootWindow( p_intf->p_sys->p_display ),
0, 0,
p_intf->p_sys->i_width, p_intf->p_sys->i_height, 1,
0, InputOutput, 0,
CWBackingStore | CWBackPixel | CWEventMask,
&xwindow_attributes );
/* Set window manager hints and properties: size hints, command,
* window's name, and accepted protocols */
XSetWMNormalHints( p_intf->p_sys->p_display, p_intf->p_sys->window,
&xsize_hints );
XSetCommand( p_intf->p_sys->p_display, p_intf->p_sys->window,
p_main->ppsz_argv, p_main->i_argc );
XStoreName( p_intf->p_sys->p_display, p_intf->p_sys->window, VOUT_TITLE );
if( (p_intf->p_sys->wm_protocols == None) /* use WM_DELETE_WINDOW */
|| (p_intf->p_sys->wm_delete_window == None)
|| !XSetWMProtocols( p_intf->p_sys->p_display, p_intf->p_sys->window,
&p_intf->p_sys->wm_delete_window, 1 ) )
{
/* WM_DELETE_WINDOW is not supported by window manager */
intf_Msg("intf error: missing or bad window manager - please exit program kindly.");
}
/* Creation of a graphic context that doesn't generate a GraphicsExpose
* event when using functions like XCopyArea */
xgcvalues.graphics_exposures = False;
p_intf->p_sys->gc = XCreateGC( p_intf->p_sys->p_display, p_intf->p_sys->window,
GCGraphicsExposures, &xgcvalues);
/* Send orders to server, and wait until window is displayed - three
* events must be received: a MapNotify event, an Expose event allowing
* drawing in the window, and a ConfigureNotify to get the window
* dimensions. Once those events have been received, only ConfigureNotify
* events need to be received. */
b_expose = 0;
b_configure_notify = 0;
b_map_notify = 0;
XMapWindow( p_intf->p_sys->p_display, p_intf->p_sys->window);
do
{
XNextEvent( p_intf->p_sys->p_display, &xevent);
if( (xevent.type == Expose)
&& (xevent.xexpose.window == p_intf->p_sys->window) )
{
b_expose = 1;
}
else if( (xevent.type == MapNotify)
&& (xevent.xmap.window == p_intf->p_sys->window) )
{
b_map_notify = 1;
}
else if( (xevent.type == ConfigureNotify)
&& (xevent.xconfigure.window == p_intf->p_sys->window) )
{
b_configure_notify = 1;
p_intf->p_sys->i_width = xevent.xconfigure.width;
p_intf->p_sys->i_height = xevent.xconfigure.height;
}
} while( !( b_expose && b_configure_notify && b_map_notify ) );
XSelectInput( p_intf->p_sys->p_display, p_intf->p_sys->window,
StructureNotifyMask | KeyPressMask | ButtonPressMask );
if( XDefaultDepth(p_intf->p_sys->p_display, p_intf->p_sys->i_screen) == 8 )
{
/* Allocate a new palette */
p_intf->p_sys->colormap = XCreateColormap( p_intf->p_sys->p_display,
DefaultRootWindow( p_intf->p_sys->p_display ),
DefaultVisual( p_intf->p_sys->p_display,
p_intf->p_sys->i_screen ),
AllocAll );
xwindow_attributes.colormap = p_intf->p_sys->colormap;
XChangeWindowAttributes( p_intf->p_sys->p_display,
p_intf->p_sys->window,
CWColormap, &xwindow_attributes );
}
/* At this stage, the window is open, displayed, and ready to receive data */
return( 0 );
}
/*****************************************************************************
* X11DestroyWindow: destroy X11 main window
*****************************************************************************/
static void X11DestroyWindow( intf_thread_t *p_intf )
{
XUnmapWindow( p_intf->p_sys->p_display, p_intf->p_sys->window );
XFreeGC( p_intf->p_sys->p_display, p_intf->p_sys->gc );
XDestroyWindow( p_intf->p_sys->p_display, p_intf->p_sys->window );
}
/*****************************************************************************
* X11ManageWindow: manage X11 main window
*****************************************************************************/
static void X11ManageWindow( intf_thread_t *p_intf )
{
XEvent xevent; /* X11 event */
boolean_t b_resized; /* window has been resized */
char i_key; /* ISO Latin-1 key */
/* Handle X11 events: ConfigureNotify events are parsed to know if the
* output window's size changed, MapNotify and UnmapNotify to know if the
* window is mapped (and if the display is useful), and ClientMessages
* to intercept window destruction requests */
b_resized = 0;
while( XCheckWindowEvent( p_intf->p_sys->p_display, p_intf->p_sys->window,
StructureNotifyMask | KeyPressMask |
ButtonPressMask, &xevent ) == True )
{
/* ConfigureNotify event: prepare */
if( (xevent.type == ConfigureNotify)
&& ((xevent.xconfigure.width != p_intf->p_sys->i_width)
|| (xevent.xconfigure.height != p_intf->p_sys->i_height)) )
{
/* Update dimensions */
b_resized = 1;
p_intf->p_sys->i_width = xevent.xconfigure.width;
p_intf->p_sys->i_height = xevent.xconfigure.height;
}
/* MapNotify event: change window status and disable screen saver */
else if( xevent.type == MapNotify)
{
if( (p_intf->p_vout != NULL) && !p_intf->p_vout->b_active )
{
X11DisableScreenSaver( p_intf );
p_intf->p_vout->b_active = 1;
}
}
/* UnmapNotify event: change window status and enable screen saver */
else if( xevent.type == UnmapNotify )
{
if( (p_intf->p_vout != NULL) && p_intf->p_vout->b_active )
{
X11EnableScreenSaver( p_intf );
p_intf->p_vout->b_active = 0;
}
}
/* Keyboard event */
else if( xevent.type == KeyPress )
{
if( XLookupString( &xevent.xkey, &i_key, 1, NULL, NULL ) )
{
if( intf_ProcessKey( p_intf, i_key ) )
{
intf_DbgMsg("unhandled key '%c' (%i)", (char) i_key, i_key );
}
}
}
/* Mouse click */
else if( xevent.type == ButtonPress )
{
switch( ((XButtonEvent *)&xevent)->button )
{
case Button1:
/* in this part we will eventually manage
* clicks for DVD navigation for instance */
break;
case Button2:
X11TogglePointer( p_intf );
break;
case Button3:
vlc_mutex_lock( &p_intf->p_vout->change_lock );
p_intf->p_vout->b_interface = !p_intf->p_vout->b_interface;
p_intf->p_vout->i_changes |= VOUT_INTF_CHANGE;
vlc_mutex_unlock( &p_intf->p_vout->change_lock );
break;
}
}
#ifdef DEBUG
/* Other event */
else
{
intf_DbgMsg( "%p -> unhandled event type %d received",
p_intf, xevent.type );
}
#endif
}
/* ClientMessage event - only WM_PROTOCOLS with WM_DELETE_WINDOW data
* are handled - according to the man pages, the format is always 32
* in this case */
while( XCheckTypedEvent( p_intf->p_sys->p_display,
ClientMessage, &xevent ) )
{
if( (xevent.xclient.message_type == p_intf->p_sys->wm_protocols)
&& (xevent.xclient.data.l[0] == p_intf->p_sys->wm_delete_window ) )
{
p_intf->b_die = 1;
}
else
{
intf_DbgMsg( "%p -> unhandled ClientMessage received", p_intf );
}
}
/*
* Handle vout or interface windows resizing
*/
if( p_intf->p_vout != NULL )
{
if( b_resized )
{
/* If interface window has been resized, change vout size */
intf_DbgMsg( "resizing output window" );
vlc_mutex_lock( &p_intf->p_vout->change_lock );
p_intf->p_vout->i_width = p_intf->p_sys->i_width;
p_intf->p_vout->i_height = p_intf->p_sys->i_height;
p_intf->p_vout->i_changes |= VOUT_SIZE_CHANGE;
vlc_mutex_unlock( &p_intf->p_vout->change_lock );
}
else if( (p_intf->p_vout->i_width != p_intf->p_sys->i_width) ||
(p_intf->p_vout->i_height != p_intf->p_sys->i_height) )
{
/* If video output size has changed, change interface window size */
intf_DbgMsg( "resizing output window" );
p_intf->p_sys->i_width = p_intf->p_vout->i_width;
p_intf->p_sys->i_height = p_intf->p_vout->i_height;
XResizeWindow( p_intf->p_sys->p_display, p_intf->p_sys->window,
p_intf->p_sys->i_width, p_intf->p_sys->i_height );
}
}
}
/*****************************************************************************
* X11EnableScreenSaver: enable screen saver
*****************************************************************************
* This function enable the screen saver on a display after it had been
* disabled by XDisableScreenSaver. Both functions use a counter mechanism to
* know wether the screen saver can be activated or not: if n successive calls
* are made to XDisableScreenSaver, n successive calls to XEnableScreenSaver
* will be required before the screen saver could effectively be activated.
*****************************************************************************/
void X11EnableScreenSaver( intf_thread_t *p_intf )
{
if( p_intf->p_sys->i_ss_count++ == 0 )
{
intf_DbgMsg( "intf: enabling screen saver" );
XSetScreenSaver( p_intf->p_sys->p_display, p_intf->p_sys->i_ss_timeout,
p_intf->p_sys->i_ss_interval, p_intf->p_sys->i_ss_blanking,
p_intf->p_sys->i_ss_exposure );
}
}
/*****************************************************************************
* X11DisableScreenSaver: disable screen saver
*****************************************************************************
* See XEnableScreenSaver
*****************************************************************************/
void X11DisableScreenSaver( intf_thread_t *p_intf )
{
if( --p_intf->p_sys->i_ss_count == 0 )
{
/* Save screen saver informations */
XGetScreenSaver( p_intf->p_sys->p_display, &p_intf->p_sys->i_ss_timeout,
&p_intf->p_sys->i_ss_interval, &p_intf->p_sys->i_ss_blanking,
&p_intf->p_sys->i_ss_exposure );
/* Disable screen saver */
intf_DbgMsg("intf: disabling screen saver");
XSetScreenSaver( p_intf->p_sys->p_display, 0,
p_intf->p_sys->i_ss_interval, p_intf->p_sys->i_ss_blanking,
p_intf->p_sys->i_ss_exposure );
}
}
/*****************************************************************************
* X11TogglePointer: hide or show the mouse pointer
*****************************************************************************
* This function hides the X pointer if it is visible by putting it at
* coordinates (32,32) and setting the pointer sprite to a blank one. To
* show it again, we disable the sprite and restore the original coordinates.
*****************************************************************************/
void X11TogglePointer( intf_thread_t *p_intf )
{
static Cursor cursor;
static boolean_t b_cursor = 0;
if( p_intf->p_sys->b_mouse )
{
p_intf->p_sys->b_mouse = 0;
if( !b_cursor )
{
XColor color;
Pixmap blank = XCreatePixmap( p_intf->p_sys->p_display,
DefaultRootWindow(p_intf->p_sys->p_display),
1, 1, 1 );
XParseColor( p_intf->p_sys->p_display,
XCreateColormap( p_intf->p_sys->p_display,
DefaultRootWindow(
p_intf->p_sys->p_display ),
DefaultVisual(
p_intf->p_sys->p_display,
p_intf->p_sys->i_screen ),
AllocNone ),
"black", &color );
cursor = XCreatePixmapCursor( p_intf->p_sys->p_display,
blank, blank, &color, &color, 1, 1 );
b_cursor = 1;
}
XDefineCursor( p_intf->p_sys->p_display,
p_intf->p_sys->window, cursor );
}
else
{
p_intf->p_sys->b_mouse = 1;
XUndefineCursor( p_intf->p_sys->p_display, p_intf->p_sys->window );
}
}
/***************************************************************************** /*****************************************************************************
* x11.c : X11 plugin for vlc * x11.c : X11 plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
*
* Authors:
* *
* Authors: Samuel Hocevar <sam@zoy.org>
*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
#define MODULE_NAME x11
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
...@@ -27,109 +29,84 @@ ...@@ -27,109 +29,84 @@
#include <stdlib.h> /* malloc(), free() */ #include <stdlib.h> /* malloc(), free() */
#include <X11/Xlib.h>
#include "config.h" #include "config.h"
#include "common.h" /* boolean_t, byte_t */ #include "common.h" /* boolean_t, byte_t */
#include "threads.h" #include "threads.h"
#include "mtime.h" #include "mtime.h"
#include "tests.h"
#include "plugins.h"
#include "interface.h"
#include "audio_output.h"
#include "video.h" #include "video.h"
#include "video_output.h" #include "video_output.h"
#include "main.h" #include "modules.h"
#include "modules_inner.h"
/***************************************************************************** /*****************************************************************************
* Exported prototypes * Building configuration tree
*****************************************************************************/ *****************************************************************************/
static void vout_GetPlugin( p_vout_thread_t p_vout ); MODULE_CONFIG_START
static void intf_GetPlugin( p_intf_thread_t p_intf ); ADD_WINDOW( "Configuration for X11 module" )
ADD_COMMENT( "For now, the X11 module cannot be configured" )
/* Video output */ MODULE_CONFIG_END
int vout_X11Create ( vout_thread_t *p_vout, char *psz_display,
int i_root_window, void *p_data );
int vout_X11Init ( p_vout_thread_t p_vout );
void vout_X11End ( p_vout_thread_t p_vout );
void vout_X11Destroy ( p_vout_thread_t p_vout );
int vout_X11Manage ( p_vout_thread_t p_vout );
void vout_X11Display ( p_vout_thread_t p_vout );
void vout_X11SetPalette ( p_vout_thread_t p_vout,
u16 *red, u16 *green, u16 *blue, u16 *transp );
/* Interface */
int intf_X11Create ( p_intf_thread_t p_intf );
void intf_X11Destroy ( p_intf_thread_t p_intf );
void intf_X11Manage ( p_intf_thread_t p_intf );
/***************************************************************************** /*****************************************************************************
* GetConfig: get the plugin structure and configuration * Capabilities defined in the other files.
******************************************************************************/
extern void vout_getfunctions( function_list_t * p_function_list );
/*****************************************************************************
* InitModule: get the module structure and configuration.
*****************************************************************************
* We have to fill psz_name, psz_longname and psz_version. These variables
* will be strdup()ed later by the main application because the module can
* be unloaded later to save memory, and we want to be able to access this
* data even after the module has been unloaded.
*****************************************************************************/ *****************************************************************************/
plugin_info_t * GetConfig( void ) int InitModule( module_t * p_module )
{ {
Display *p_display; p_module->psz_name = MODULE_STRING;
plugin_info_t * p_info = (plugin_info_t *) malloc( sizeof(plugin_info_t) ); p_module->psz_longname = "X11 module";
p_module->psz_version = VERSION;
p_info->psz_name = "X Window System";
p_info->psz_version = VERSION;
p_info->psz_author = "the VideoLAN team <vlc@videolan.org>";
p_info->aout_GetPlugin = NULL;
p_info->vout_GetPlugin = vout_GetPlugin;
p_info->intf_GetPlugin = intf_GetPlugin;
p_info->yuv_GetPlugin = NULL;
/* check that we can open the X display */
if( (p_display = XOpenDisplay( XDisplayName(
main_GetPszVariable( VOUT_DISPLAY_VAR, NULL ) ) ))
== NULL )
{
p_info->i_score = 0x0;
}
else
{
XCloseDisplay( p_display );
p_info->i_score = 0x200;
}
if( TestProgram( "xvlc" ) ) p_module->i_capabilities = MODULE_CAPABILITY_NULL
{ | MODULE_CAPABILITY_VOUT;
p_info->i_score += 0x180;
}
/* If this plugin was requested, score it higher */ return( 0 );
if( TestMethod( VOUT_METHOD_VAR, "x11" ) ) }
/*****************************************************************************
* ActivateModule: set the module to an usable state.
*****************************************************************************
* This function fills the capability functions and the configuration
* structure. Once ActivateModule() has been called, the i_usage can
* be set to 0 and calls to NeedModule() be made to increment it. To unload
* the module, one has to wait until i_usage == 0 and call DeactivateModule().
*****************************************************************************/
int ActivateModule( module_t * p_module )
{
p_module->p_functions = malloc( sizeof( module_functions_t ) );
if( p_module->p_functions == NULL )
{ {
p_info->i_score += 0x200; return( -1 );
} }
return( p_info ); vout_getfunctions( &p_module->p_functions->vout );
p_module->p_config = p_config;
return( 0 );
} }
/***************************************************************************** /*****************************************************************************
* Following functions are only called through the p_info structure * DeactivateModule: make sure the module can be unloaded.
*****************************************************************************
* This function must only be called when i_usage == 0. If it successfully
* returns, i_usage can be set to -1 and the module unloaded. Be careful to
* lock usage_lock during the whole process.
*****************************************************************************/ *****************************************************************************/
int DeactivateModule( module_t * p_module )
static void vout_GetPlugin( p_vout_thread_t p_vout )
{ {
p_vout->p_sys_create = vout_X11Create; free( p_module->p_functions );
p_vout->p_sys_init = vout_X11Init;
p_vout->p_sys_end = vout_X11End;
p_vout->p_sys_destroy = vout_X11Destroy;
p_vout->p_sys_manage = vout_X11Manage;
p_vout->p_sys_display = vout_X11Display;
/* optional functions */
p_vout->p_set_palette = vout_X11SetPalette;
}
static void intf_GetPlugin( p_intf_thread_t p_intf ) return( 0 );
{
p_intf->p_sys_create = intf_X11Create;
p_intf->p_sys_destroy = intf_X11Destroy;
p_intf->p_sys_manage = intf_X11Manage;
} }
Name: vlc Name: vlc
Version: 0.2.50 Version: 0.2.60
Release: 1 Release: 1
Copyright: GPL Copyright: GPL
Url: http://www.videolan.org/ Url: http://www.videolan.org/
Group: X11/Applications/Graphics Group: X11/Applications/Graphics
Source0: http://www.videolan.org/packages/0.2.50/vlc_0.2.50-1.tar.gz Source0: http://www.videolan.org/packages/0.2.60/vlc-0.2.60.tar.gz
Packager: Samuel Hocevar <sam@zoy.org> Packager: Samuel Hocevar <sam@zoy.org>
Buildroot: /tmp/vlc-build Buildroot: /tmp/vlc-build
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment