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

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

?? hal.c

?? VLC Player Source Code
?? C
字號:
/***************************************************************************** * hal.c :  HAL probing module ***************************************************************************** * Copyright (C) 2004 the VideoLAN team * $Id: b131b73c660ae6fead5b8347c7366b834c61e774 $ * * 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. *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <vlc_common.h>#include <vlc_plugin.h>#include <vlc_interface.h>#include <vlc_devices.h>#include <hal/libhal.h>/***************************************************************************** * Local prototypes *****************************************************************************/struct probe_sys_t{    DBusConnection *p_connection;    LibHalContext *p_ctx;    int            i_devices;    device_t     **pp_devices;};static int  Open ( vlc_object_t * );static void Close( vlc_object_t * );static void Update ( device_probe_t *p_probe );static void UpdateMedia( device_probe_t *p_probe, device_t *p_dev );static void AddDevice( device_probe_t * p_probe, device_t *p_dev );static device_t * ParseDisc( device_probe_t *p_probe,  char *psz_device );/***************************************************************************** * Module descriptor *****************************************************************************/vlc_module_begin();    set_description( N_("HAL devices detection") );    set_capability( "devices probe", 0 );    set_callbacks( Open, Close );vlc_module_end();/***************************************************************************** * Open: initialize and create stuff *****************************************************************************/static int Open( vlc_object_t *p_this ){    device_probe_t *p_probe = (device_probe_t *)p_this;    DBusError           dbus_error;    DBusConnection      *p_connection;    probe_sys_t          *p_sys;    p_probe->p_sys = p_sys = (probe_sys_t*)malloc( sizeof( probe_sys_t ) );    p_probe->p_sys->i_devices = 0;    p_probe->p_sys->pp_devices = NULL;    p_probe->pf_run = Update;    dbus_error_init( &dbus_error );    p_sys->p_ctx = libhal_ctx_new();    if( !p_sys->p_ctx )    {        msg_Err( p_probe, "unable to create HAL context") ;        free( p_probe->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_probe, "unable to connect to DBUS: %s", dbus_error.message );        dbus_error_free( &dbus_error );        free( p_probe->p_sys );        return VLC_EGENERIC;    }    p_sys->p_connection = p_connection;    libhal_ctx_set_dbus_connection( p_probe->p_sys->p_ctx, p_connection );    if( !libhal_ctx_init( p_probe->p_sys->p_ctx, &dbus_error ) )    {        msg_Err( p_probe, "hal not available : %s", dbus_error.message );        dbus_connection_unref( p_connection );        dbus_error_free( &dbus_error );        free( p_sys );        return VLC_EGENERIC;    }    return VLC_SUCCESS;}/***************************************************************************** * Close: *****************************************************************************/static void Close( vlc_object_t *p_this ){    device_probe_t *p_probe = (device_probe_t *) p_this;    probe_sys_t *p_sys = p_probe->p_sys;    dbus_connection_unref( p_sys->p_connection );    free( p_sys );}#if 0static int GetAllDevices( device_probe_t *p_probe, device_t ***ppp_devices ){    /// \todo : fill the dst array    return p_probe->p_sys->i_devices;}#endifstatic void Update( device_probe_t * p_probe ){    probe_sys_t *p_sys = p_probe->p_sys;    int i, i_devices, j;    char **devices;    bool b_exists;    for ( j = 0 ; j < p_sys->i_devices; j++ )        p_sys->pp_devices[j]->b_seen = false;    /* CD/DVD */    if( ( devices = libhal_find_device_by_capability( p_sys->p_ctx,                              "storage.cdrom",                              &i_devices, NULL ) ) )    {        for( i = 0; i < i_devices; i++ )        {            device_t *p_dev = ParseDisc( p_probe, devices[ i ] );            b_exists = false;            for ( j = 0 ; j < p_sys->i_devices; j++ )            {                if( !strcmp( p_sys->pp_devices[j]->psz_uri,                             p_dev->psz_uri ) )                {                    b_exists = true;                    p_dev->b_seen = true;                    UpdateMedia( p_probe, p_dev );                    break;                }                if( !b_exists )                    AddDevice( p_probe, p_dev );            }        }    }    /// \todo Remove unseen devices}static void AddDevice( device_probe_t * p_probe, device_t *p_dev ){    INSERT_ELEM( p_probe->p_sys->pp_devices,                 p_probe->p_sys->i_devices,                 p_probe->p_sys->i_devices,                 p_dev );    /// \todo : emit variable}static device_t * ParseDisc( device_probe_t *p_probe,  char *psz_device ){    probe_sys_t *p_sys = p_probe->p_sys;    device_t *p_dev;    char *block_dev;    dbus_bool_t b_dvd;    if( !libhal_device_property_exists( p_sys->p_ctx, psz_device,                                        "storage.cdrom.dvd", NULL ) )        return NULL;    p_dev = (device_t *)malloc( sizeof( device_t ) );    p_dev->i_media_type = p_dev->i_capabilities = 0;    p_dev->psz_name = p_dev->psz_uri = NULL;    block_dev =  libhal_device_get_property_string( p_sys->p_ctx, psz_device,                                                   "block.device" , NULL );    if( block_dev )    {        p_dev->psz_uri = strdup( block_dev );        libhal_free_string( block_dev );    }    b_dvd = libhal_device_get_property_bool( p_sys->p_ctx, psz_device,                                            "storage.cdrom.dvd", NULL  );    if( b_dvd )        p_dev->i_capabilities = DEVICE_CAN_DVD | DEVICE_CAN_CD;    else        p_dev->i_capabilities = DEVICE_CAN_CD;    UpdateMedia( p_probe, p_dev );    return p_dev;}static void UpdateMedia( device_probe_t *p_probe, device_t *p_dev ){    probe_sys_t *p_sys = p_probe->p_sys;    char **matching_media;    int i_matching, i;    bool b_changed = false;;    int i_old_type = p_dev->i_media_type;    p_dev->i_media_type = 0;    /* Find the media in the drive */    matching_media = libhal_manager_find_device_string_match( p_sys->p_ctx,                                            "block.device", p_dev->psz_uri,                                            &i_matching, NULL );    for( i = 0; i < i_matching; i++ )    {        if( libhal_device_property_exists( p_sys->p_ctx, matching_media[i],                                           "volume.disc.type", NULL ) )        {            char *psz_media_name = libhal_device_get_property_string(                                            p_sys->p_ctx,                                            matching_media[i],                                            "volume.label", NULL );            if( psz_media_name )            {                if( p_dev->psz_name && strcmp( p_dev->psz_name, psz_media_name))                {                    free( p_dev->psz_name );                    p_dev->psz_name = NULL;                    b_changed = true;                }                if( !p_dev->psz_name )                    p_dev->psz_name = strdup( psz_media_name );                libhal_free_string( psz_media_name );            }            if( libhal_device_get_property_bool( p_sys->p_ctx,                                             matching_media[i],                                             "volume.disc.is_videodvd", NULL) )                p_dev->i_media_type = MEDIA_TYPE_DVD;            else if( libhal_device_get_property_bool( p_sys->p_ctx,                                             matching_media[i],                                             "volume.disc.is_vcd", NULL) ||                     libhal_device_get_property_bool( p_sys->p_ctx,                                             matching_media[i],                                             "volume.disc.is_svcd", NULL) )               p_dev->i_media_type = MEDIA_TYPE_VCD;            else if( libhal_device_get_property_bool( p_sys->p_ctx,                                             matching_media[i],                                             "volume.disc.has_audio", NULL) )               p_dev->i_media_type = MEDIA_TYPE_CDDA;            break;        }    }    if( b_changed || p_dev->i_media_type != i_old_type )    {        /// \todo emit changed signal    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线中文字幕| 久久久久久久久久久久久久久99| ...av二区三区久久精品| 福利91精品一区二区三区| 亚洲欧洲日韩在线| 91在线porny国产在线看| 一区二区三区日韩精品视频| 欧美日韩大陆在线| 精品一区二区三区在线播放视频| 久久久亚洲午夜电影| 成人av高清在线| 亚洲成人激情av| 精品不卡在线视频| 99国产精品久| 日韩成人免费看| 国产校园另类小说区| 色婷婷综合视频在线观看| 丝袜亚洲另类欧美| 国产午夜精品一区二区三区四区| 成人av网址在线观看| 午夜久久电影网| 国产免费成人在线视频| 日本精品视频一区二区| 精品一区二区免费| 亚洲另类在线视频| 精品国产一区二区三区久久久蜜月| 成人免费va视频| 日韩成人精品在线| 亚洲色图视频免费播放| 日韩一区二区高清| 99re热视频精品| 麻豆国产精品一区二区三区| 亚洲欧洲美洲综合色网| 欧美大片国产精品| 91视频在线观看免费| 久久99精品久久只有精品| 自拍av一区二区三区| wwwwxxxxx欧美| 欧美在线观看视频一区二区| 国产成人午夜视频| 日韩电影一区二区三区| 亚洲三级在线播放| 久久综合久色欧美综合狠狠| 欧美日韩日本视频| 成人免费毛片高清视频| 另类综合日韩欧美亚洲| 亚洲永久精品大片| 国产精品美日韩| 久久综合色综合88| 日韩欧美你懂的| 欧美偷拍一区二区| 99久久久久久| www.亚洲色图| 成人手机在线视频| 国产裸体歌舞团一区二区| 日日摸夜夜添夜夜添精品视频| 亚洲男人天堂av| 国产精品剧情在线亚洲| 久久这里只精品最新地址| 欧美一区二区三区视频在线| 91极品美女在线| 一本久久a久久免费精品不卡| 国产精品一区二区你懂的| 裸体在线国模精品偷拍| 丝袜亚洲另类欧美综合| 亚洲v中文字幕| 亚洲男人的天堂网| 亚洲黄色小视频| 亚洲久本草在线中文字幕| 国产精品成人网| 国产精品初高中害羞小美女文| 国产精品毛片久久久久久| 国产亚洲欧美日韩日本| 国产色产综合色产在线视频| 久久精品人人爽人人爽| 国产人久久人人人人爽| 国产欧美精品在线观看| 国产精品网站导航| 日韩理论在线观看| 亚洲精品免费播放| 亚洲成在人线在线播放| 午夜不卡av免费| 免费高清不卡av| 国模一区二区三区白浆| 粉嫩高潮美女一区二区三区| 成人动漫精品一区二区| 色综合 综合色| 欧美麻豆精品久久久久久| 91精品视频网| 久久毛片高清国产| 国产精品久久久久桃色tv| 亚洲欧美日本韩国| 亚洲成av人片在线| 久草在线在线精品观看| 国产成人亚洲综合a∨婷婷| av在线不卡网| 欧美日韩亚洲综合在线 | 亚洲综合精品久久| 午夜伦欧美伦电影理论片| 人人爽香蕉精品| 国产91精品精华液一区二区三区 | 日本一区二区三区dvd视频在线| 国产精品热久久久久夜色精品三区 | 一区二区视频在线| 天天影视涩香欲综合网| 精品在线播放午夜| av在线一区二区三区| 欧美日韩视频在线观看一区二区三区 | 欧美日韩国产不卡| 2023国产精华国产精品| 亚洲欧美怡红院| 蜜桃av噜噜一区| 91无套直看片红桃| 欧美一区二区三区免费大片| 欧美国产精品一区| 亚洲成人精品一区二区| 国产黑丝在线一区二区三区| 在线观看不卡视频| 久久久精品免费网站| 亚洲日本va午夜在线影院| 麻豆传媒一区二区三区| 色视频成人在线观看免| 欧美成人官网二区| 亚洲图片欧美综合| 成人国产视频在线观看| 正在播放亚洲一区| 亚洲激情图片qvod| 国产电影一区二区三区| 欧美视频中文一区二区三区在线观看| 精品国产乱码久久| 亚洲成人先锋电影| av亚洲精华国产精华精华| 欧美成人艳星乳罩| 亚洲国产精品综合小说图片区| 成人精品免费看| 欧美精品一区二区久久久| 亚洲国产精品久久人人爱| 成人黄色综合网站| 久久久久久久久久久久电影| 午夜国产精品影院在线观看| 91小视频在线免费看| 国产色一区二区| 国产一区二三区| 欧美一区二区三区系列电影| 亚洲精品成人天堂一二三| 成人一区二区三区视频在线观看| 欧美一级一区二区| 午夜精品视频一区| 欧美三级日韩在线| 亚洲一区二区三区中文字幕| 本田岬高潮一区二区三区| 国产亚洲短视频| 国产精品99久久久久| 欧美www视频| 免费欧美日韩国产三级电影| 欧美三区在线观看| 亚洲成年人影院| 欧美视频三区在线播放| 一卡二卡三卡日韩欧美| 色婷婷激情久久| 亚洲综合一区在线| 91成人在线精品| 一区二区三区小说| 一本色道久久加勒比精品| 亚洲同性gay激情无套| aaa国产一区| 亚洲精品乱码久久久久久| 一本大道久久a久久精品综合| 国产精品乱人伦中文| 成人国产精品视频| 亚洲欧美综合在线精品| 91丨porny丨国产入口| 亚洲一区二区三区在线播放| 欧美性色aⅴ视频一区日韩精品| 亚洲国产精品久久久男人的天堂| 欧美三级资源在线| 免费成人你懂的| 久久综合av免费| 成人国产免费视频| 亚洲乱码国产乱码精品精的特点| 91成人免费在线视频| 午夜精品一区在线观看| 日韩精品一区二区三区中文精品| 久久国产福利国产秒拍| 久久久久久久综合色一本| 99这里只有久久精品视频| 一区二区三区精品在线| 欧美精品亚洲二区| 久久99国产精品免费| 国产午夜精品理论片a级大结局| 99久久伊人精品| 香蕉加勒比综合久久| 欧美成人在线直播| 不卡欧美aaaaa| 性欧美大战久久久久久久久| 久久美女艺术照精彩视频福利播放 | 最新国产成人在线观看| 欧美老肥妇做.爰bbww视频| 毛片av中文字幕一区二区| 国产精品蜜臀av|