Mercurial > mplayer.hg
changeset 12096:54514e4733a1
ALSA syc is not so good as OSS - small corrections
added Motif hints memorizing before switching to full screen because
WM can modify decorations of the app window
author | atlka |
---|---|
date | Thu, 01 Apr 2004 20:59:07 +0000 |
parents | cef97e8c85c0 |
children | cb0cdaa0bddf |
files | libao2/ao_alsa9.c libvo/x11_common.c |
diffstat | 2 files changed, 29 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/libao2/ao_alsa9.c Thu Apr 01 20:14:59 2004 +0000 +++ b/libao2/ao_alsa9.c Thu Apr 01 20:59:07 2004 +0000 @@ -20,13 +20,8 @@ #include "../config.h" #include "../mixer.h" -#if HAVE_SYS_ASOUNDLIB_H -#include <sys/asoundlib.h> -#elif HAVE_ALSA_ASOUNDLIB_H +#define ALSA_PCM_OLD_HW_PARAMS_API #include <alsa/asoundlib.h> -#else -#error "asoundlib.h is not in sys/ or alsa/ - please bugreport" -#endif #include "audio_out.h" #include "audio_out_internal.h" @@ -44,7 +39,6 @@ LIBAO_EXTERN(alsa9) - static snd_pcm_t *alsa_handler; static snd_pcm_format_t alsa_format; static snd_pcm_hw_params_t *alsa_hwparams; @@ -75,8 +69,8 @@ #define ALSA_DEVICE_SIZE 48 -#undef BUFFERTIME -#define SET_CHUNKSIZE +//#undef BUFFERTIME +//#undef SET_CHUNKSIZE #undef USE_POLL @@ -625,7 +619,7 @@ snd_strerror(err)); return(0); } - if (verbose>0) +/ if (verbose>0) printf("alsa-init: buffer_time: %d, period_time :%d\n",alsa_buffer_time, err); } #endif @@ -635,12 +629,13 @@ //set chunksize if ((err = snd_pcm_hw_params_set_period_size_near(alsa_handler, alsa_hwparams, chunk_size, 0)) < 0) { - printf("alsa-init: unable to set periodsize: %s\n", snd_strerror(err)); + printf("alsa-init: unable to set periodsize(%d): %s\n", + chunk_size, snd_strerror(err)); return(0); } - else if (verbose>0) { + else // if (verbose>0) { printf("alsa-init: chunksize set to %i\n", chunk_size); - } +// } //set period_count if ((period_val = snd_pcm_hw_params_get_periods_max(alsa_hwparams, 0)) < alsa_fragcount) {
--- a/libvo/x11_common.c Thu Apr 01 20:14:59 2004 +0000 +++ b/libvo/x11_common.c Thu Apr 01 20:59:07 2004 +0000 @@ -608,19 +608,15 @@ static MotifWmHints vo_MotifWmHints; static Atom vo_MotifHints = None; -// Note: always d==0 ! void vo_x11_decoration( Display * vo_Display,Window w,int d ) { - + static unsigned int olddecor = MWM_DECOR_ALL; + static unsigned int oldfuncs = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE; + Atom mtype; + int mformat; + unsigned long mn,mb; if ( !WinID ) return; - if(vo_fsmode&1){ - XSetWindowAttributes attr; - attr.override_redirect = (!d) ? True : False; - XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr); -// XMapWindow(vo_Display, w); - } - if(vo_fsmode&8){ XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen)); } @@ -628,12 +624,26 @@ vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 ); if ( vo_MotifHints != None ) { + if (!d) { + MotifWmHints *mhints=NULL; + XGetWindowProperty(vo_Display,w, vo_MotifHints, 0, 20, False, + vo_MotifHints, &mtype, &mformat, &mn, + &mb, (unsigned char **)&mhints) ; + if (mhints){ + if (mhints->flags & MWM_HINTS_DECORATIONS) + olddecor = mhints->decorations; + if (mhints->flags & MWM_HINTS_FUNCTIONS) + oldfuncs = mhints->functions; + XFree (mhints); + } + } + memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) ); vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; if ( d ) { - vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE; - d=MWM_DECOR_ALL; + vo_MotifWmHints.functions= oldfuncs; + d=olddecor; } #if 0 vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU);