]> git.sesse.net Git - vlc/commitdiff
* updated version information to 0.2.60 -- today's release
authorSam Hocevar <sam@videolan.org>
Wed, 14 Feb 2001 07:48:18 +0000 (07:48 +0000)
committerSam Hocevar <sam@videolan.org>
Wed, 14 Feb 2001 07:48:18 +0000 (07:48 +0000)
 * started porting the X11 vout (still disabled)
 * a few unnoticeable changes in the Gnome intf

20 files changed:
ChangeLog
Makefile.in
TODO
configure
configure.in
debian/changelog
plugins/dummy/dummy.c
plugins/gnome/gnome.c
plugins/gnome/gnome_callbacks.c
plugins/gnome/gnome_callbacks.h
plugins/gnome/gnome_interface.c
plugins/gnome/gnome_interface.h
plugins/gnome/gnome_sys.h
plugins/gnome/intf_gnome.c
plugins/gnome/intf_gnome.glade
plugins/sdl/sdl.c
plugins/x11/intf_x11.c [deleted file]
plugins/x11/vout_x11.c
plugins/x11/x11.c
vlc.spec

index fd76cadb865972a54102a4bcc9520d507d6adaf0..a232d90224ecd4a525ad703665e0802f7387ab88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+
+### THIS CHANGELOG HASN'T BEEN UPDATED FOR UNSTABLE ###
+
 0.1.99j:
 
   * Added hardware YUV overlay support (SDL). Huge performance
index caa981ecfeb2b97dfb39b0ca2dba21c6da6dd7e9..e5bcc41982707b9784e9f146002b242c3566cddb 100644 (file)
@@ -332,7 +332,6 @@ PLUGIN_MGA =        plugins/mga/mga.o \
                plugins/mga/vout_mga.o
 
 PLUGIN_X11=    plugins/x11/x11.o \
-               plugins/x11/intf_x11.o \
                plugins/x11/vout_x11.o
 
 PLUGIN_YUV =   plugins/yuv/yuv.o \
diff --git a/TODO b/TODO
index 04e3aecaf5e873722703c37098b4ce1db936bf6d..353a04f1e17f8356a1d69afb289b0cd166e29653 100644 (file)
--- a/TODO
+++ b/TODO
@@ -213,7 +213,7 @@ Status: Done 27 Aug 2000 (Meuuh)
 Task: 0x36
 Difficulty: Medium
 Urgency: Normal
- Description: 
+Description: Enhance the interface
  . Finish the new keyboard input interface to support 
    interfaces that allow modifiers. This will allow the SDL to run 
    properly.
index 7a2649c184a474f02aa56e5ecba80b575c69ca88..73436642dfbed4800731fee97382c30cf1b19526 100755 (executable)
--- a/configure
+++ b/configure
@@ -602,7 +602,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
 
-VLC_VERSION=0.2.50
+VLC_VERSION=0.2.60
 
 VLC_CODENAME=Urumov
 
@@ -1018,7 +1018,7 @@ else
 int main() {
 
 /* 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.  */
 char const *const *ccp;
 char **p;
@@ -1975,15 +1975,12 @@ else
 #include <sys/types.h>
 #include <fcntl.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.  */
 #ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -2038,7 +2035,7 @@ main()
        /*
         * First, make a file with some known garbage in it.
         */
-       data = (char*)malloc(pagesize);
+       data = malloc(pagesize);
        if (!data)
                exit(1);
        for (i = 0; i < pagesize; ++i)
@@ -2059,7 +2056,7 @@ main()
        fd = open("conftestmmap", O_RDWR);
        if (fd < 0)
                exit(1);
-       data2 = (char*)malloc(2 * pagesize);
+       data2 = malloc(2 * pagesize);
        if (!data2)
                exit(1);
        data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2077,7 +2074,7 @@ main()
         */
        for (i = 0; i < pagesize; ++i)
                *(data2 + i) = *(data2 + i) + 1;
-       data3 = (char*)malloc(pagesize);
+       data3 = malloc(pagesize);
        if (!data3)
                exit(1);
        if (read(fd, data3, pagesize) != pagesize)
@@ -2091,7 +2088,7 @@ main()
 }
 
 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
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -2114,12 +2111,12 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2123 "configure"
+#line 2120 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2136,7 +2133,7 @@ int main() {
 int i;
 ; return 0; }
 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*
   ac_cv_type_signal=void
 else
@@ -2155,7 +2152,7 @@ EOF
 
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2163,7 +2160,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2167 "configure"
+#line 2164 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2174,7 +2171,7 @@ int main() {
 dlopen()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2202,7 +2199,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2210,7 +2207,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgnugetopt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2214 "configure"
+#line 2211 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2221,7 +2218,7 @@ int main() {
 optarg()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2249,7 +2246,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2257,7 +2254,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbe  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2261 "configure"
+#line 2258 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2268,7 +2265,7 @@ int main() {
 _()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2296,7 +2293,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2304,7 +2301,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgame  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2308 "configure"
+#line 2305 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2315,7 +2312,7 @@ int main() {
 _()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2343,7 +2340,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2351,7 +2348,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lroot  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2355 "configure"
+#line 2352 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2362,7 +2359,7 @@ int main() {
 _()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2390,7 +2387,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2398,7 +2395,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2402 "configure"
+#line 2399 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2409,7 +2406,7 @@ int main() {
 powl()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2437,7 +2434,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2445,7 +2442,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2449 "configure"
+#line 2446 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2456,7 +2453,7 @@ int main() {
 pthread_create()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2484,7 +2481,7 @@ else
 fi
 
 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2492,7 +2489,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2496 "configure"
+#line 2493 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2503,7 +2500,7 @@ int main() {
 thread_create()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2532,12 +2529,12 @@ fi
 
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2541 "configure"
+#line 2538 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char getopt_long(); below.  */
@@ -2560,7 +2557,7 @@ getopt_long();
 
 ; return 0; }
 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*
   eval "ac_cv_func_getopt_long=yes"
 else
@@ -2587,17 +2584,17 @@ for ac_hdr in stddef.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2596 "configure"
+#line 2593 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2627,17 +2624,17 @@ for ac_hdr in getopt.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2636 "configure"
+#line 2633 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2667,17 +2664,17 @@ for ac_hdr in sys/sockio.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2676 "configure"
+#line 2673 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2707,17 +2704,17 @@ for ac_hdr in fcntl.h sys/ioctl.h sys/time.h unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2716 "configure"
+#line 2713 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2747,17 +2744,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2756 "configure"
+#line 2753 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2787,17 +2784,17 @@ for ac_hdr in dlfcn.h image.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2796 "configure"
+#line 2793 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2827,17 +2824,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2836 "configure"
+#line 2833 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2867,17 +2864,17 @@ for ac_hdr in machine/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2876 "configure"
+#line 2873 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2908,17 +2905,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2917 "configure"
+#line 2914 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2949,9 +2946,9 @@ save_CFLAGS=$CFLAGS
 
 CFLAGS="${CFLAGS} -Wall -Werror"
 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
-#line 2955 "configure"
+#line 2952 "configure"
 #include "confdefs.h"
 #include <sys/param.h>
 void foo() { int meuh; ntohl(meuh); }
@@ -2959,7 +2956,7 @@ int main() {
 
 ; return 0; }
 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*
   cat >> confdefs.h <<\EOF
 #define NTOHL_IN_SYS_PARAM_H 1
@@ -2976,16 +2973,16 @@ rm -f conftest*
 
 CFLAGS="${CFLAGS} -rdynamic"
 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
-#line 2982 "configure"
+#line 2979 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 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*
   DYNAMIC_FLAG="-rdynamic"
  echo "$ac_t""yes" 1>&6
@@ -3000,9 +2997,9 @@ rm -f conftest*
 CFLAGS=$save_CFLAGS
 
 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
-#line 3006 "configure"
+#line 3003 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 void quux() { boolean_t foo; }
@@ -3010,7 +3007,7 @@ int main() {
 
 ; return 0; }
 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*
   cat >> confdefs.h <<\EOF
 #define BOOLEAN_T_IN_SYS_TYPES_H 1
@@ -3026,18 +3023,18 @@ fi
 rm -f conftest*
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3035 "configure"
+#line 3032 "configure"
 #include "confdefs.h"
 
 int main() {
 
 /* 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.  */
 char const *const *ccp;
 char **p;
@@ -3080,7 +3077,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 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*
   ac_cv_c_const=yes
 else
@@ -3101,12 +3098,12 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3110 "configure"
+#line 3107 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3114,7 +3111,7 @@ else
 #include <float.h>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3131,7 +3128,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3135 "configure"
+#line 3132 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3149,7 +3146,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3153 "configure"
+#line 3150 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3170,7 +3167,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3174 "configure"
+#line 3171 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3181,7 +3178,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 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
   :
 else
@@ -3205,12 +3202,12 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3214 "configure"
+#line 3211 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3238,12 +3235,12 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3247 "configure"
+#line 3244 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3252,7 +3249,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 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*
   ac_cv_header_time=yes
 else
@@ -3277,17 +3274,17 @@ for ac_hdr in sys/ioctl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3286 "configure"
+#line 3283 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3311,17 +3308,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3320 "configure"
+#line 3317 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3348,7 +3345,7 @@ fi
 done
 
    cat > conftest.$ac_ext <<EOF
-#line 3352 "configure"
+#line 3349 "configure"
 #include "confdefs.h"
 #include <linux/cdrom.h>
 EOF
@@ -3509,17 +3506,17 @@ if test "${enable_alsa+set}" = set; then
   enableval="$enable_alsa"
   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 "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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3518 "configure"
+#line 3515 "configure"
 #include "confdefs.h"
 #include <sys/asoundlib.h>
 EOF
 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}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3536,7 +3533,7 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 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_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3544,14 +3541,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lasound  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3548 "configure"
+#line 3545 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 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*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
index 1d8453de711ce67021a47f8292768925de7304e0..bfd651d4dd29c591e9907816c3f8a81692face9a 100644 (file)
@@ -4,7 +4,7 @@ AC_CONFIG_HEADER(include/defs.h)
 
 AC_CANONICAL_HOST
 
-VLC_VERSION=0.2.50
+VLC_VERSION=0.2.60
 AC_SUBST(VLC_VERSION)
 VLC_CODENAME=Urumov
 AC_SUBST(VLC_CODENAME)
index d5e5e85e749507217fd18361523d39f2e7f32aa7..e634a27dc08dfb33bcd65d4406e337d143e20ec9 100644 (file)
@@ -1,3 +1,9 @@
+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
 
   * Only build vlc-glide under x86 (Closes: #84046).
index e6e7b7683994698030201e2493b2a914b23c335b..087e926bd2faaec4d7c662b84225b5fd48e583cc 100644 (file)
 #include "common.h"                                     /* boolean_t, byte_t */
 #include "threads.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_inner.h"
index 533dc3271cb090ef7a5e40e9507168e5d6e7f43f..ca628042d08ba426ea164024a3d696f11a5f7943 100644 (file)
 #include "common.h"                                     /* boolean_t, byte_t */
 #include "threads.h"
 #include "mtime.h"
-#include "tests.h"
-
-#include "interface.h"
-#include "video.h"
-#include "video_output.h"
 
 #include "modules.h"
 #include "modules_inner.h"
index 0474ff9398b230a5d8515da608a3a9346587e7b4..ce2ae4920f6182ea649b227500658a4e25485e18 100644 (file)
@@ -99,14 +99,7 @@ on_menubar_playlist_activate           (GtkMenuItem     *menuitem,
                              "p_intf", p_intf );
     }
     gtk_widget_show( p_intf->p_sys->p_playlist );
-}
-
-
-void
-on_menubar_plugins_activate            (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
-{
-
+    gdk_window_raise( p_intf->p_sys->p_playlist->window );
 }
 
 
@@ -131,6 +124,7 @@ on_menubar_about_activate              (GtkMenuItem     *menuitem,
                              "p_intf", p_intf );
     }
     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,
                              "p_intf", p_intf );
     }
     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,
                              "p_intf", p_intf );
     }
     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,
 }
 
 
+
+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 );
+}
+
index be6e21fbbcab00eb6cd024b7e40e127481f6261e..215b19298c2d126c7eada03d5937871d4ee863f8 100644 (file)
@@ -159,3 +159,31 @@ gboolean
 on_hscale_button_press_event           (GtkWidget       *widget,
                                         GdkEventButton  *event,
                                         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);
index 13214595c5482683edf2c936dc37dd278d36f273..d07397f4c71f456c68d10e9dda3a9d704c9a3a65 100644 (file)
@@ -35,9 +35,9 @@ static GnomeUIInfo menubar_view_menu_uiinfo[] =
     0, (GdkModifierType) 0, NULL
   },
   {
-    GNOME_APP_UI_ITEM, N_("_Plugins"),
+    GNOME_APP_UI_ITEM, N_("_Modules"),
     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,
     0, (GdkModifierType) 0, NULL
   },
@@ -130,7 +130,7 @@ create_intf_window (void)
                             (GtkDestroyNotify) gtk_widget_unref);
 
   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,
                             (GtkDestroyNotify) gtk_widget_unref);
 
@@ -319,7 +319,7 @@ create_intf_window (void)
   gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
   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_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale,
                             (GtkDestroyNotify) gtk_widget_unref);
@@ -543,112 +543,164 @@ create_intf_fileopen (void)
   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*
 create_intf_playlist (void)
 {
   GtkWidget *intf_playlist;
-  GtkWidget *vbox1;
-  GtkWidget *scrolledwindow2;
-  GtkWidget *clist1;
-  GtkWidget *label3;
-  GtkWidget *label4;
-  GtkWidget *label5;
-  GtkWidget *hseparator1;
-  GtkWidget *hbox1;
-  GtkWidget *button1;
-  GtkWidget *playlist_close;
-  GtkWidget *playlist_help;
-
-  intf_playlist = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  GtkWidget *dialog_vbox2;
+  GtkWidget *label11;
+  GtkWidget *scrolledwindow3;
+  GtkWidget *clist2;
+  GtkWidget *label8;
+  GtkWidget *label9;
+  GtkWidget *label10;
+  GtkWidget *dialog_action_area2;
+  GtkWidget *playlist_ok;
+
+  intf_playlist = gnome_dialog_new (_("Playlist"), NULL);
   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);
-  gtk_widget_ref (scrolledwindow2);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow2", scrolledwindow2,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (scrolledwindow2);
-  gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow2, TRUE, TRUE, 0);
+  dialog_vbox2 = GNOME_DIALOG (intf_playlist)->vbox;
+  gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_vbox2", dialog_vbox2);
+  gtk_widget_show (dialog_vbox2);
 
-  clist1 = gtk_clist_new (3);
-  gtk_widget_ref (clist1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist1", clist1,
+  label11 = gtk_label_new (_("Sorry, the playlist isn't functional yet. Please retry in a later version."));
+  gtk_widget_ref (label11);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label11", label11,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (clist1);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow2), clist1);
-  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));
+  gtk_widget_show (label11);
+  gtk_box_pack_start (GTK_BOX (dialog_vbox2), label11, FALSE, FALSE, 0);
 
-  label3 = gtk_label_new (_("Name"));
-  gtk_widget_ref (label3);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label3", label3,
+  scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow3);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow3", scrolledwindow3,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label3);
-  gtk_clist_set_column_widget (GTK_CLIST (clist1), 0, label3);
+  gtk_widget_show (scrolledwindow3);
+  gtk_box_pack_start (GTK_BOX (dialog_vbox2), scrolledwindow3, TRUE, TRUE, 0);
 
-  label4 = gtk_label_new (_("Type"));
-  gtk_widget_ref (label4);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label4", label4,
+  clist2 = gtk_clist_new (3);
+  gtk_widget_ref (clist2);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist2", clist2,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label4);
-  gtk_clist_set_column_widget (GTK_CLIST (clist1), 1, label4);
+  gtk_widget_show (clist2);
+  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"));
-  gtk_widget_ref (label5);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label5", label5,
+  label8 = gtk_label_new (_("Name"));
+  gtk_widget_ref (label8);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label8", label8,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (label5);
-  gtk_clist_set_column_widget (GTK_CLIST (clist1), 2, label5);
+  gtk_widget_show (label8);
+  gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, label8);
 
-  hseparator1 = gtk_hseparator_new ();
-  gtk_widget_ref (hseparator1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "hseparator1", hseparator1,
+  label9 = gtk_label_new (_("Type"));
+  gtk_widget_ref (label9);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label9", label9,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hseparator1);
-  gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, FALSE, TRUE, 0);
+  gtk_widget_show (label9);
+  gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, label9);
 
-  hbox1 = gtk_hbox_new (TRUE, 0);
-  gtk_widget_ref (hbox1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "hbox1", hbox1,
+  label10 = gtk_label_new (_("Length"));
+  gtk_widget_ref (label10);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label10", label10,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (hbox1);
-  gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+  gtk_widget_show (label10);
+  gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, label10);
 
-  button1 = gtk_button_new_with_label (_("Wazaaaa !"));
-  gtk_widget_ref (button1);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "button1", button1,
-                            (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (button1);
-  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);
+  dialog_action_area2 = GNOME_DIALOG (intf_playlist)->action_area;
+  gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_action_area2", dialog_action_area2);
+  gtk_widget_show (dialog_action_area2);
+  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
+  gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area2), 8);
 
-  playlist_help = gnome_stock_button (GNOME_STOCK_BUTTON_HELP);
-  gtk_widget_ref (playlist_help);
-  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_help", playlist_help,
+  gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_OK);
+  playlist_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
+  gtk_widget_ref (playlist_ok);
+  gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok", playlist_ok,
                             (GtkDestroyNotify) gtk_widget_unref);
-  gtk_widget_show (playlist_help);
-  gtk_box_pack_start (GTK_BOX (hbox1), playlist_help, FALSE, FALSE, 0);
+  gtk_widget_show (playlist_ok);
+  GTK_WIDGET_SET_FLAGS (playlist_ok, GTK_CAN_DEFAULT);
 
   gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
                       GTK_SIGNAL_FUNC (on_intf_playlist_destroy),
                       NULL);
-  gtk_signal_connect (GTK_OBJECT (playlist_close), "clicked",
-                      GTK_SIGNAL_FUNC (on_playlist_close_clicked),
+  gtk_signal_connect (GTK_OBJECT (playlist_ok), "clicked",
+                      GTK_SIGNAL_FUNC (on_playlist_ok_clicked),
                       NULL);
 
   return intf_playlist;
index c54874d031370024dcffe99dfcf45f38b1404721..e4b4ae190f0a6eca0aa6e68e4e0a3b049b7d9458 100644 (file)
@@ -6,4 +6,5 @@ GtkWidget* create_intf_window (void);
 GtkWidget* create_intf_popup (void);
 GtkWidget* create_intf_about (void);
 GtkWidget* create_intf_fileopen (void);
+GtkWidget* create_intf_modules (void);
 GtkWidget* create_intf_playlist (void);
index f66f9930ef95b5a86e2cebd116c44951b5bb72d0..4b338883c42d8a8eae066baface5f2bde4c9f26a 100644 (file)
@@ -2,7 +2,7 @@
  * gnome_sys.h: private Gnome interface description
  *****************************************************************************
  * 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:
  *
@@ -41,6 +41,7 @@ typedef struct intf_sys_s
     GtkWidget *         p_window;                             /* main window */
     GtkWidget *         p_popup;                               /* popup menu */
     GtkWidget *         p_playlist;                              /* playlist */
+    GtkWidget *         p_modules;                         /* module manager */
     GtkWidget *         p_about;                             /* about window */
     GtkWidget *         p_fileopen;                      /* file open window */
 
index f9bbd828b13dcdef1a27eab145e619299d6e071a..5e08a7044af89289a4c81edde93d855253c96d43 100644 (file)
@@ -2,7 +2,7 @@
  * intf_gnome.c: Gnome interface
  *****************************************************************************
  * 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:
  *
@@ -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 */
     p_intf->p_sys->p_about = NULL;
     p_intf->p_sys->p_playlist = NULL;
+    p_intf->p_sys->p_modules = NULL;
     p_intf->p_sys->p_fileopen = NULL;
 
     /* store p_sys to keep an eye on it */
@@ -265,7 +266,7 @@ static gint GnomeManage( gpointer p_data )
 
         vlc_mutex_unlock( &p_intf->p_sys->change_lock );
 
-        /* prepare to die, young man */
+        /* Prepare to die, young Skywalker */
         gtk_main_quit();
         return( FALSE );
     }
index 139777ae1c35a148a4a1d21db13dcdd047264791..f7bd45aa34a542f451e2d8415bc46ff7e06a48be 100644 (file)
 
            <widget>
              <class>GtkPixmapMenuItem</class>
-             <name>menubar_plugins</name>
+             <name>menubar_modules</name>
              <tooltip>Open the plugin manager</tooltip>
              <signal>
                <name>activate</name>
-               <handler>on_menubar_plugins_activate</handler>
-               <last_modification_time>Sun, 11 Feb 2001 16:55:04 GMT</last_modification_time>
+               <handler>on_menubar_modules_activate</handler>
+               <last_modification_time>Tue, 13 Feb 2001 17:19:41 GMT</last_modification_time>
              </signal>
-             <label>_Plugins</label>
+             <label>_Modules</label>
              <right_justify>False</right_justify>
              <stock_icon>GNOME_STOCK_MENU_ATTACH</stock_icon>
            </widget>
        <lower>0</lower>
        <upper>100</upper>
        <step>1</step>
-       <page>0</page>
-       <page_size>0</page_size>
+       <page>5</page>
+       <page_size>1</page_size>
        <child>
          <padding>0</padding>
          <expand>False</expand>
@@ -631,12 +631,118 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
 </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>
   <signal>
     <name>destroy</name>
     <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>
   <title>Playlist</title>
   <type>GTK_WINDOW_TOPLEVEL</type>
@@ -645,16 +751,72 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
   <allow_shrink>False</allow_shrink>
   <allow_grow>True</allow_grow>
   <auto_shrink>False</auto_shrink>
+  <auto_close>False</auto_close>
+  <hide_on_close>False</hide_on_close>
 
   <widget>
     <class>GtkVBox</class>
-    <name>vbox1</name>
+    <child_name>GnomeDialog:vbox</child_name>
+    <name>dialog-vbox2</name>
     <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>
       <class>GtkScrolledWindow</class>
-      <name>scrolledwindow2</name>
+      <name>scrolledwindow3</name>
       <hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy>
       <vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
       <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
@@ -667,18 +829,18 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
 
       <widget>
        <class>GtkCList</class>
-       <name>clist1</name>
+       <name>clist2</name>
        <can_focus>True</can_focus>
        <columns>3</columns>
-       <column_widths>189,80,80</column_widths>
+       <column_widths>211,49,35</column_widths>
        <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
-       <show_titles>True</show_titles>
+       <show_titles>False</show_titles>
        <shadow_type>GTK_SHADOW_IN</shadow_type>
 
        <widget>
          <class>GtkLabel</class>
          <child_name>CList:title</child_name>
-         <name>label3</name>
+         <name>label8</name>
          <label>Name</label>
          <justify>GTK_JUSTIFY_CENTER</justify>
          <wrap>False</wrap>
@@ -691,7 +853,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
        <widget>
          <class>GtkLabel</class>
          <child_name>CList:title</child_name>
-         <name>label4</name>
+         <name>label9</name>
          <label>Type</label>
          <justify>GTK_JUSTIFY_CENTER</justify>
          <wrap>False</wrap>
@@ -704,7 +866,7 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
        <widget>
          <class>GtkLabel</class>
          <child_name>CList:title</child_name>
-         <name>label5</name>
+         <name>label10</name>
          <label>Length</label>
          <justify>GTK_JUSTIFY_CENTER</justify>
          <wrap>False</wrap>
@@ -715,72 +877,6 @@ Henri Fallon &lt;henri@via.ecp.fr&gt;
        </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>
 
index 998069b7e4b577c0d4823c4c85aeec7def5a52cf..42c69988a0332905d0f7584cde04a44840cf7f4c 100644 (file)
@@ -35,7 +35,6 @@
 #include "common.h"                                     /* boolean_t, byte_t */
 #include "threads.h"
 #include "mtime.h"
-#include "tests.h"
 
 #include "audio_output.h"
 
diff --git a/plugins/x11/intf_x11.c b/plugins/x11/intf_x11.c
deleted file mode 100644 (file)
index 0141231..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-/*****************************************************************************
- * 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 );
-    }
-}
index b2186875416f3a25ce3b183f93a7467f1a0d395e..6469f6da970b7a3eaf225f45e5ac3cb8443c7052 100644 (file)
@@ -2,9 +2,10 @@
  * vout_x11.c: X11 video output display method
  *****************************************************************************
  * 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
  * it under the terms of the GNU General Public License as published by
 #include <sys/shm.h>                                   /* shmget(), shmctl() */
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#include <X11/keysym.h>
 #include <X11/extensions/XShm.h>
 
 #include "config.h"
 #include "common.h"
 #include "threads.h"
 #include "mtime.h"
-#include "plugins.h"
+#include "tests.h"
+#include "modules.h"
 
 #include "video.h"
 #include "video_output.h"
 
+#include "interface.h"
 #include "intf_msg.h"
 
 /*****************************************************************************
@@ -78,12 +82,39 @@ typedef struct vout_sys_s
     /* Display buffers and shared memory information */
     XImage *            p_ximage[2];                       /* XImage pointer */
     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;
 
 /*****************************************************************************
  * 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 int  X11CreateWindow     ( 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,
                                   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
  * vout properties to choose the window size, and change them according to the
  * actual properties of the display.
  *****************************************************************************/
-int vout_X11Create( vout_thread_t *p_vout, char *psz_display,
-                    int i_root_window, void *p_data )
+static int vout_Create( vout_thread_t *p_vout )
 {
     /* Allocate structure */
     p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
@@ -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
      * pointer than the interface or another thread. However, the root window
      * 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" );
         free( p_vout->p_sys );
@@ -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
  * 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;
 
@@ -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.
  *****************************************************************************/
-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... */
     {
@@ -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
  *****************************************************************************/
-void vout_X11Destroy( vout_thread_t *p_vout )
+static void vout_Destroy( vout_thread_t *p_vout )
 {
     X11CloseDisplay( p_vout );
     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
  * X11 events and allows window resizing. It returns a non null value on
  * 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
@@ -252,10 +314,10 @@ int vout_X11Manage( vout_thread_t *p_vout )
                        p_vout->i_width, p_vout->i_height );
 
         /* 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. */
-        if( vout_X11Init( p_vout ) )
+        if( vout_Init( p_vout ) )
         {
             intf_ErrMsg("error: can't resize display");
             return( 1 );
@@ -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
  * 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 */
     {
@@ -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
  * anything, but could later send information on which colors it was unable
  * to set.
  *****************************************************************************/
-void vout_X11SetPalette( p_vout_thread_t p_vout,
-                         u16 *red, u16 *green, u16 *blue, u16 *transp )
+static void vout_SetPalette( p_vout_thread_t p_vout,
+                             u16 *red, u16 *green, u16 *blue, u16 *transp )
 {
     int i;
     XColor color[255];
@@ -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
  * 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 */
     XVisualInfo *               p_xvisual;           /* visuals informations */
@@ -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 );
+    }
+}
index 87d69be63c66cc797cc19e125704f0b446b522eb..a726c071676478d915680a0592e5b67bdbab09db 100644 (file)
@@ -1,10 +1,10 @@
 /*****************************************************************************
  * x11.c : X11 plugin for vlc
  *****************************************************************************
- * Copyright (C) 2000 VideoLAN
- *
- * Authors:
+ * Copyright (C) 2000, 2001 VideoLAN
  *
+ * Authors: Samuel Hocevar <sam@zoy.org>
+ *      
  * 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
@@ -20,6 +20,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
+#define MODULE_NAME x11
+
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
 
 #include <stdlib.h>                                      /* malloc(), free() */
 
-#include <X11/Xlib.h>
-
 #include "config.h"
 #include "common.h"                                     /* boolean_t, byte_t */
 #include "threads.h"
 #include "mtime.h"
-#include "tests.h"
-#include "plugins.h"
 
-#include "interface.h"
-#include "audio_output.h"
 #include "video.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 );
-static void intf_GetPlugin( p_intf_thread_t p_intf );
-
-/* Video output */
-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 );
+MODULE_CONFIG_START
+ADD_WINDOW( "Configuration for X11 module" )
+    ADD_COMMENT( "For now, the X11 module cannot be configured" )
+MODULE_CONFIG_END
 
 /*****************************************************************************
- * 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;
-    plugin_info_t * p_info = (plugin_info_t *) malloc( sizeof(plugin_info_t) );
-
-    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;
-    }
+    p_module->psz_name = MODULE_STRING;
+    p_module->psz_longname = "X11 module";
+    p_module->psz_version = VERSION;
 
-    if( TestProgram( "xvlc" ) )
-    {
-        p_info->i_score += 0x180;
-    }
+    p_module->i_capabilities = MODULE_CAPABILITY_NULL
+                                | MODULE_CAPABILITY_VOUT;
 
-    /* If this plugin was requested, score it higher */
-    if( TestMethod( VOUT_METHOD_VAR, "x11" ) )
+    return( 0 );
+}
+
+/*****************************************************************************
+ * 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.
  *****************************************************************************/
-
-static void vout_GetPlugin( p_vout_thread_t p_vout )
+int DeactivateModule( module_t * p_module )
 {
-    p_vout->p_sys_create  = vout_X11Create;
-    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;
-}
+    free( p_module->p_functions );
 
-static void intf_GetPlugin( p_intf_thread_t p_intf )
-{
-    p_intf->p_sys_create  = intf_X11Create;
-    p_intf->p_sys_destroy = intf_X11Destroy;
-    p_intf->p_sys_manage  = intf_X11Manage;
+    return( 0 );
 }
 
index b18572c2f91725337fb5557c327fab74ceac69ac..bcd9f4829f323eae0f96f3f46daaabcf0f458d03 100644 (file)
--- a/vlc.spec
+++ b/vlc.spec
@@ -1,10 +1,10 @@
 Name: vlc
-Version: 0.2.50
+Version: 0.2.60
 Release: 1
 Copyright: GPL
 Url: http://www.videolan.org/
 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>
 
 Buildroot: /tmp/vlc-build