[vlc-devel] [PATCH 22/41] Implement OS/2 specific initialization

Rémi Denis-Courmont remi at remlab.net
Mon Oct 10 17:43:16 CEST 2011


Le lundi 10 octobre 2011 14:44:01 KO Myung-Hun, vous avez écrit :
> ---
>  src/Makefile.am    |    2 +-
>  src/os2/specific.c |   83
> ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84
> insertions(+), 1 deletions(-)
>  create mode 100644 src/os2/specific.c
> 
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 9cfa200..6f775ed 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -281,7 +281,7 @@ SOURCES_libvlc_os2 = \
>  	misc/atomic.c \
>  	posix/filesystem.c \
>  	os2/thread.c \
> -	posix/specific.c \
> +	os2/specific.c \
>  	$(NULL)
> 
>  SOURCES_libvlc_other = \
> diff --git a/src/os2/specific.c b/src/os2/specific.c
> new file mode 100644
> index 0000000..0cb01a7
> --- /dev/null
> +++ b/src/os2/specific.c
> @@ -0,0 +1,83 @@
> +/*************************************************************************
> **** + * specific.c: OS/2 specific features
> +
> **************************************************************************
> *** + * Copyright (C) 2010 KO Myung-Hun
> + *
> + * 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., 51 Franklin Street, Fifth Floor, Boston MA
> 02110-1301, USA. +
> **************************************************************************
> ***/ +
> +#ifdef HAVE_CONFIG_H
> +# include "config.h"
> +#endif
> +
> +#include <vlc_common.h>
> +#include "../libvlc.h"
> +
> +#include <fcntl.h>
> +#include <io.h>
> +
> +extern int _fmode_bin;
> +
> +void system_Init( void )
> +{
> +    PPIB ppib;
> +    CHAR psz_path[ CCHMAXPATH ];
> +    PSZ  psz_dirsep;
> +
> +    DosGetInfoBlocks( NULL, &ppib );
> +
> +    DosQueryModuleName( ppib->pib_hmte, sizeof( psz_path ), psz_path );
> +
> +    /* remove the executable name */
> +    psz_dirsep = strrchr( psz_path, '\\');
> +    if( psz_dirsep )
> +        *psz_dirsep = '\0';
> +
> +    /* remove the last directory, i.e, \\bin */
> +    psz_dirsep = strrchr( psz_path, '\\' );
> +    if( psz_dirsep )
> +        *psz_dirsep = '\0';
> +
> +    asprintf( &psz_vlcpath, "%s\\lib\\vlc", psz_path );

This works for VLC. I don't mind but this may be a problem with LibVLC, as 
system_Init() may be entered multiple tines.

> +
> +    /* Set the default file-translation mode */
> +    _fmode_bin = 1;
> +    setmode( fileno( stdin ), O_BINARY ); /* Needed for pipes */
> +
> +    /* Call mdate() once to make sure it is initialized properly */
> +    mdate();

This should not be needed as far as I understand your implementation of 
mdate().

> +}
> +
> +void system_Configure( libvlc_int_t *p_this, int i_argc, const char *const
> ppsz_argv[] ) +{
> +    VLC_UNUSED( i_argc ); VLC_UNUSED( ppsz_argv );
> +    if( var_InheritBool( p_this, "high-priority" ) )
> +    {
> +        if( !DosSetPriority( PRTYS_PROCESS, PRTYC_REGULAR, PRTYD_MAXIMUM,
> 0 ) ) +        {
> +            msg_Dbg( p_this, "raised process priority" );
> +        }
> +        else
> +        {
> +            msg_Dbg( p_this, "could not raise process priority" );
> +        }
> +    }
> +}
> +
> +void system_End( void )
> +{
> +    free( psz_vlcpath );
> +    psz_vlcpath = NULL;
> +}


-- 
Rémi Denis-Courmont
http://www.remlab.net/
http://fi.linkedin.com/in/remidenis



More information about the vlc-devel mailing list