亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hal.c

?? uclinux 下的vlc播放器源代碼
?? C
字號:
/***************************************************************************** * hal.c :  HAL interface module ***************************************************************************** * Copyright (C) 2004 the VideoLAN team * $Id: hal.c 17886 2006-11-20 04:01:08Z funman $ * * Authors: Clément Stenac <zorglub@videolan.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 * (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. *****************************************************************************//***************************************************************************** * Includes *****************************************************************************/#include <stdlib.h>                                      /* malloc(), free() */#include <vlc/vlc.h>#include <vlc/intf.h>#include <vlc/input.h>#include "network.h"#include <errno.h>                                                 /* ENOMEM */#ifdef HAVE_UNISTD_H#    include <unistd.h>#endif#ifdef HAVE_SYS_TIME_H#    include <sys/time.h>#endif#include <hal/libhal.h>/************************************************************************ * Macros and definitions ************************************************************************/#define MAX_LINE_LENGTH 256/***************************************************************************** * Module descriptor *****************************************************************************//* Callbacks */    static int  Open ( vlc_object_t * );    static void Close( vlc_object_t * );vlc_module_begin();    set_description( _("HAL devices detection") );    set_category( CAT_PLAYLIST );    set_subcategory( SUBCAT_PLAYLIST_SD );    set_capability( "services_discovery", 0 );    set_callbacks( Open, Close );vlc_module_end();/***************************************************************************** * Local structures *****************************************************************************/struct services_discovery_sys_t{    LibHalContext *p_ctx;    /* playlist node */    playlist_item_t *p_node;};/***************************************************************************** * Local prototypes *****************************************************************************//* Main functions */    static void Run    ( services_discovery_t *p_intf );/***************************************************************************** * Open: initialize and create stuff *****************************************************************************/static int Open( vlc_object_t *p_this ){    services_discovery_t *p_sd = ( services_discovery_t* )p_this;    services_discovery_sys_t *p_sys  = malloc(                                    sizeof( services_discovery_sys_t ) );    vlc_value_t         val;    playlist_t          *p_playlist;    playlist_view_t     *p_view;    DBusError           dbus_error;    DBusConnection      *p_connection;    p_sd->pf_run = Run;    p_sd->p_sys  = p_sys;    dbus_error_init( &dbus_error );#ifdef HAVE_HAL_1    p_sys->p_ctx = libhal_ctx_new();    if( !p_sys->p_ctx )    {        msg_Err( p_sd, "unable to create HAL context") ;        free( p_sys );        return VLC_EGENERIC;    }    p_connection = dbus_bus_get( DBUS_BUS_SYSTEM, &dbus_error );    if( dbus_error_is_set( &dbus_error ) )    {        msg_Err( p_sd, "unable to connect to DBUS: %s", dbus_error.message );        dbus_error_free( &dbus_error );        free( p_sys );        return VLC_EGENERIC;    }    libhal_ctx_set_dbus_connection( p_sys->p_ctx, p_connection );    if( !libhal_ctx_init( p_sys->p_ctx, &dbus_error ) )#else    if( !(p_sys->p_ctx = hal_initialize( NULL, FALSE ) ) )#endif    {        msg_Err( p_sd, "hal not available : %s", dbus_error.message );        dbus_error_free( &dbus_error );        free( p_sys );        return VLC_EGENERIC;    }    /* Create our playlist node */    p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,                                                FIND_ANYWHERE );    if( !p_playlist )    {        msg_Warn( p_sd, "unable to find playlist, cancelling HAL listening");        return VLC_EGENERIC;    }    p_view = playlist_ViewFind( p_playlist, VIEW_CATEGORY );    p_sys->p_node = playlist_NodeCreate( p_playlist, VIEW_CATEGORY,                                         _("Devices"), p_view->p_root );    p_sys->p_node->i_flags |= PLAYLIST_RO_FLAG;    val.b_bool = VLC_TRUE;    var_Set( p_playlist, "intf-change", val );    vlc_object_release( p_playlist );    return VLC_SUCCESS;}/***************************************************************************** * Close: *****************************************************************************/static void Close( vlc_object_t *p_this ){    services_discovery_t *p_sd = ( services_discovery_t* )p_this;    services_discovery_sys_t *p_sys  = p_sd->p_sys;    playlist_t *p_playlist =  (playlist_t *) vlc_object_find( p_sd,                                 VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );    if( p_playlist )    {        playlist_NodeDelete( p_playlist, p_sys->p_node, VLC_TRUE, VLC_TRUE );        vlc_object_release( p_playlist );    }    free( p_sys );}static void AddDvd( services_discovery_t *p_sd, char *psz_device ){    char *psz_name;    char *psz_uri;    char *psz_blockdevice;    services_discovery_sys_t    *p_sys  = p_sd->p_sys;    playlist_t          *p_playlist;    playlist_item_t     *p_item;#ifdef HAVE_HAL_1    psz_name = libhal_device_get_property_string( p_sd->p_sys->p_ctx,                                        psz_device, "volume.label", NULL );    psz_blockdevice = libhal_device_get_property_string( p_sd->p_sys->p_ctx,                                        psz_device, "block.device", NULL );#else    psz_name = hal_device_get_property_string( p_sd->p_sys->p_ctx,                                               psz_device, "volume.label" );    psz_blockdevice = hal_device_get_property_string( p_sd->p_sys->p_ctx,                                                 psz_device, "block.device" );#endif    asprintf( &psz_uri, "dvd://%s", psz_blockdevice );    /* Create the playlist item here */    p_item = playlist_ItemNew( p_sd, psz_uri,                               psz_name );    free( psz_uri );#ifdef HAVE_HAL_1    libhal_free_string( psz_device );#else    hal_free_string( psz_device );#endif    if( !p_item )    {        return;    }    p_item->i_flags &= ~PLAYLIST_SKIP_FLAG;    p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,                                                FIND_ANYWHERE );    if( !p_playlist )    {        msg_Err( p_sd, "playlist not found" );        return;    }    playlist_NodeAddItem( p_playlist, p_item, VIEW_CATEGORY, p_sys->p_node,                          PLAYLIST_APPEND, PLAYLIST_END );    vlc_object_release( p_playlist );}static void AddCdda( services_discovery_t *p_sd, char *psz_device ){    char *psz_name = "Audio CD";    char *psz_uri;    char *psz_blockdevice;    services_discovery_sys_t    *p_sys  = p_sd->p_sys;    playlist_t          *p_playlist;    playlist_item_t     *p_item;#ifdef HAVE_HAL_1    psz_blockdevice = libhal_device_get_property_string( p_sd->p_sys->p_ctx,                                            psz_device, "block.device", NULL );#else    psz_blockdevice = hal_device_get_property_string( p_sd->p_sys->p_ctx,                                                 psz_device, "block.device" );#endif    asprintf( &psz_uri, "cdda://%s", psz_blockdevice );    /* Create the playlist item here */    p_item = playlist_ItemNew( p_sd, psz_uri,                               psz_name );    free( psz_uri );#ifdef HAVE_HAL_1    libhal_free_string( psz_device );#else    hal_free_string( psz_device );#endif    if( !p_item )    {        return;    }    p_item->i_flags &= ~PLAYLIST_SKIP_FLAG;    p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,                                                FIND_ANYWHERE );    if( !p_playlist )    {        msg_Err( p_sd, "playlist not found" );        return;    }    playlist_NodeAddItem( p_playlist, p_item, VIEW_CATEGORY, p_sys->p_node,                          PLAYLIST_APPEND, PLAYLIST_END );    vlc_object_release( p_playlist );}static void ParseDevice( services_discovery_t *p_sd, char *psz_device ){    char *psz_disc_type;    services_discovery_sys_t    *p_sys  = p_sd->p_sys;#ifdef HAVE_HAL_1    if( libhal_device_property_exists( p_sys->p_ctx, psz_device,                                       "volume.disc.type", NULL ) )    {        psz_disc_type = libhal_device_get_property_string( p_sys->p_ctx,                                                        psz_device,                                                        "volume.disc.type",                                                        NULL );#else    if( hal_device_property_exists( p_sys->p_ctx, psz_device,                                    "volume.disc.type" ) )    {        psz_disc_type = hal_device_get_property_string( p_sys->p_ctx,                                                        psz_device,                                                        "volume.disc.type" );#endif        if( !strncmp( psz_disc_type, "dvd_r", 5 ) )        {#ifdef HAVE_HAL_1            if (libhal_device_get_property_bool( p_sys->p_ctx, psz_device,                        "volume.disc.is_videodvd", NULL ) )#endif                AddDvd( p_sd, psz_device );        }        else if( !strncmp( psz_disc_type, "cd_r", 4 ) )        {#ifdef HAVE_HAL_1            if( libhal_device_get_property_bool( p_sys->p_ctx, psz_device,                                         "volume.disc.has_audio" , NULL ) )#else            if( hal_device_get_property_bool( p_sys->p_ctx, psz_device,                                         "volume.disc.has_audio" ) )#endif            {                AddCdda( p_sd, psz_device );            }        }#ifdef HAVE_HAL_1        libhal_free_string( psz_disc_type );#else        hal_free_string( psz_disc_type );#endif    }}/***************************************************************************** * Run: main HAL thread *****************************************************************************/static void Run( services_discovery_t *p_sd ){    int i, i_devices;    char **devices;    services_discovery_sys_t    *p_sys  = p_sd->p_sys;    /* parse existing devices first */#ifdef HAVE_HAL_1    if( ( devices = libhal_get_all_devices( p_sys->p_ctx, &i_devices, NULL ) ) )#else    if( ( devices = hal_get_all_devices( p_sys->p_ctx, &i_devices ) ) )#endif    {        for( i = 0; i < i_devices; i++ )        {            ParseDevice( p_sd, devices[ i ] );        }    }    while( !p_sd->b_die )    {        msleep( 100000 );    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲六月丁香色婷婷综合久久| 伊人色综合久久天天人手人婷| 综合久久国产九一剧情麻豆| 五月激情综合网| 成人av网站在线观看免费| 日韩午夜激情av| 亚洲最新视频在线播放| 国产91色综合久久免费分享| 欧美日本一道本在线视频| 亚洲视频你懂的| 国产精品影视网| www国产亚洲精品久久麻豆| 婷婷一区二区三区| 在线观看国产91| 亚洲欧洲另类国产综合| 精品亚洲成a人在线观看 | 伊人性伊人情综合网| 国产91在线|亚洲| 国产日韩一级二级三级| 精品在线视频一区| 精品少妇一区二区三区免费观看 | 777久久久精品| 亚洲综合成人在线视频| 欧美影院一区二区三区| 亚洲人成在线观看一区二区| av一区二区久久| 国产精品你懂的在线欣赏| 国产不卡视频在线播放| 国产婷婷色一区二区三区在线| 韩国精品一区二区| 精品国产免费人成在线观看| 蜜桃av一区二区三区| 欧美一区二区三区日韩| 久久超碰97中文字幕| 精品国产一区二区三区久久久蜜月| 全国精品久久少妇| 欧美v国产在线一区二区三区| 日本aⅴ精品一区二区三区| 日韩欧美二区三区| 国产成人精品三级| 亚洲欧洲韩国日本视频| 99精品久久99久久久久| 综合精品久久久| 欧美伊人久久大香线蕉综合69| 一区二区三区毛片| 欧美日韩一区国产| 精品无人码麻豆乱码1区2区 | 国产麻豆精品视频| 国产一区二三区| 国产资源在线一区| 麻豆精品国产91久久久久久| 亚洲色图一区二区三区| 综合久久久久久久| 欧美综合色免费| 日韩成人精品在线| 国产午夜精品一区二区三区四区| 粉嫩aⅴ一区二区三区四区 | 色激情天天射综合网| 天堂一区二区在线免费观看| 日韩欧美色电影| 99久久免费精品| 五月激情六月综合| 久久久久国产一区二区三区四区| 99re这里只有精品首页| 日韩av中文字幕一区二区 | 91麻豆免费观看| 精品国产伦一区二区三区观看体验| 中文字幕一区不卡| 欧美日本视频在线| 成人综合在线网站| 亚洲第一综合色| 欧美激情一区二区三区四区| 欧美亚洲国产一区二区三区 | 成人av免费在线| 日韩高清一区在线| 亚洲欧洲99久久| 日韩一区二区三区免费看 | 国产盗摄一区二区三区| 亚洲一区二区三区国产| 久久亚洲一区二区三区四区| 91麻豆视频网站| 国产一区二区三区观看| 亚洲精品大片www| 国产亚洲精品7777| 91精品国产品国语在线不卡| 亚洲欧美国产77777| 国产高清不卡一区二区| 91激情在线视频| 国产精品久久久久aaaa樱花| 色婷婷激情一区二区三区| 精品一区二区三区香蕉蜜桃| 国产精品高清亚洲| 日韩精品中午字幕| 欧美丝袜丝交足nylons图片| 国产福利一区在线观看| 五月婷婷久久丁香| 亚洲午夜一二三区视频| 麻豆精品国产91久久久久久| 97se亚洲国产综合自在线观| 综合色天天鬼久久鬼色| 久久先锋资源网| 日韩欧美中文字幕制服| 日韩欧美国产三级电影视频| 国产成人综合在线播放| 精品综合免费视频观看| 日本大胆欧美人术艺术动态| 午夜电影一区二区| 亚洲国产日韩在线一区模特| 日韩理论片网站| ㊣最新国产の精品bt伙计久久| 日韩一区二区精品葵司在线| 欧美日韩国产精品自在自线| 欧美性大战久久久久久久| 日本精品一区二区三区四区的功能| 国产成人精品在线看| 国产91丝袜在线观看| 高清不卡在线观看| 成人免费高清在线观看| 99久久伊人网影院| 成人动漫视频在线| 91视频免费看| 色综合咪咪久久| 欧美午夜不卡视频| 欧美高清视频不卡网| 欧美一区二区三区视频免费 | 午夜久久电影网| 日韩国产一二三区| 久久国产精品免费| 国产福利一区在线| 一本久道中文字幕精品亚洲嫩 | 亚洲综合自拍偷拍| 视频一区视频二区中文| 久久99国产精品久久| 国产一区视频网站| 成人中文字幕电影| 日本高清视频一区二区| 欧美日韩在线播放| 26uuu国产一区二区三区| 中文字幕一区二区三区乱码在线 | 欧美亚洲免费在线一区| 91精品久久久久久久99蜜桃| 欧美成人高清电影在线| 国产精品嫩草影院com| 一区二区三区国产| 久久超碰97人人做人人爱| av午夜一区麻豆| 欧美日韩久久不卡| 欧美激情一区二区三区在线| 亚洲一区二区在线免费观看视频 | 99国产一区二区三精品乱码| 欧美性受极品xxxx喷水| 久久久久久电影| 一二三区精品福利视频| 久草这里只有精品视频| 91久久线看在观草草青青| 日韩一区二区三区在线观看| 国产精品久久一级| 青青草成人在线观看| 不卡一区二区三区四区| 正在播放亚洲一区| 国产精品久久久久久久久久免费看 | 五月天精品一区二区三区| 国产中文字幕一区| 欧美午夜精品电影| 懂色av中文一区二区三区 | 麻豆精品久久精品色综合| www.av亚洲| 精品av久久707| 亚洲线精品一区二区三区| 国内成+人亚洲+欧美+综合在线 | 亚洲最大色网站| 成人午夜av在线| 日韩一级二级三级精品视频| 亚洲精品视频观看| 懂色av一区二区三区免费观看| 正在播放亚洲一区| 亚洲一区二区四区蜜桃| voyeur盗摄精品| 国产喷白浆一区二区三区| 奇米精品一区二区三区在线观看一 | 成人动漫中文字幕| 日韩精品影音先锋| 亚洲第一在线综合网站| 91丝袜国产在线播放| 中文字幕欧美国产| 国内精品免费**视频| 日韩午夜精品视频| 奇米色一区二区| 在线播放/欧美激情| 亚洲乱码中文字幕综合| www..com久久爱| 国产精品麻豆久久久| 成人美女视频在线观看| 久久天天做天天爱综合色| 麻豆久久一区二区| 日韩一区二区精品| 麻豆91精品视频| 精品三级av在线| 狠狠色丁香久久婷婷综合_中| 日韩精品影音先锋|