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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? skl_drv_x11.cpp

?? mpeg4編解碼器
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
/******************************************************** * Some code. Copyright (C) 2003 by Pascal Massimino.   * * All Rights Reserved.      (http://skal.planet-d.net) * * For Educational/Academic use ONLY. See 'LICENSE.TXT'.* ********************************************************//* * skl_drv_x11.cpp * * X11 (/SHM) video main driver ********************************************************/#include "skl_video.h"#ifndef SKL_NO_VIDEO#ifdef SKL_USE_X11#include "skl_syst/skl_dyn_load.h"#include "./skl_drv_x11.h"#if defined(__IRIX__)// #define COMPLETION_BUG#endif#if defined(__SUN__) || defined(__IRIX__)#define DONT_DETACH_FIRST#endif//////////////////////////////////////////////////////////// SKL_X11_VIDEO_I//////////////////////////////////////////////////////////SKL_X11_VIDEO_I::SKL_X11_VIDEO_I(SKL_MEM_I *Mem,                                 SKL_CST_STRING Name,                                 SKL_CST_STRING Dsp_Name)  : SKL_VIDEO_I(Mem, Name)  , _Screen(-1)  , _XDisplay(0)  , _Display_Name(Dsp_Name)  , _Use_Shm(0), _Use_DGA(0)  , _Has_Shm(0), _Has_DGA(0)  , _VSync(1){   _Caps = (CAPS)( HAS_BACKBUFFER );#if defined(SKL_USE_SHM)  Set_Param(USE_SHM, 0, 1);#endif#if defined(SKL_USE_DGA)  Set_Param(USE_DGA, 0, 1);  _Caps = (CAPS)(_Caps|HAS_FULLSCREEN);#endif  Ping();}SKL_X11_VIDEO_I::~SKL_X11_VIDEO_I(){  Cleanup();}void SKL_X11_VIDEO_I::Cleanup(){  Clear_Modes();  if (_XDisplay!=0) XCloseDisplay(_XDisplay);    _Screen = -1;  _XDisplay = 0;  Set_Not_Ok();}//////////////////////////////////////////////////////////SKL_FORMAT SKL_X11_VIDEO_I::Get_Visual_Format(XVisualInfo *Info) const{  int Dsp_Depth;  SKL_FORMAT Fmt;  Visual *v = Info->visual;    // Ackward method to get the exact Pixel_Depth of display  XImage *XImg = XCreateImage( _XDisplay, v, Info->depth,                                ZPixmap, 0, 0,                               16, 16,                               BitmapPad(_XDisplay), 0 );  if (XImg!=0) {    Dsp_Depth = XImg->bytes_per_line / 16;    XDestroyImage( XImg );  }  else {    Dsp_Depth = (Info->depth+7)/8; // geee!!! finger crossing  }  if (v->c_class==PseudoColor)     Fmt = 0x00000 | (Dsp_Depth<<16);  // cmapped format  else    Fmt = SKL_FORMAT(v->red_mask, v->green_mask, v->blue_mask, 0, Dsp_Depth);  return Fmt;}int SKL_X11_VIDEO_I::Scan_Modes(SKL_FORMAT Fmt){  int Nb_Modes;  XVisualInfo Template;  Template.screen = DefaultScreen(_XDisplay); // _Screen;  Template.c_class = TrueColor;  XVisualInfo *Info = XGetVisualInfo( _XDisplay,                                            VisualClassMask | VisualScreenMask,                                      &Template, &Nb_Modes );  if (Info==0) {    fprintf( stderr, "Can't get X visual\n" );    return 0;  }  int Depth = -1;  if (Fmt.Raw_Depth()!=0) Depth = 8 * Fmt.Raw_Depth();  int Nb=0;  for( int i=0; i<Nb_Modes; i++)  {    // Get rid of Visual with depth<8 and skip bad visuals    if (Depth!=-1 && Info[i].depth!=Depth) continue;    else if (Info[i].depth<8) continue;    else if ( Info[i].c_class==StaticColor ||              Info[i].c_class==StaticGray ||              Info[i].c_class==GrayScale )      continue;      SKL_X11_WIN *Mode = new (Get_Mem()) SKL_X11_WIN(this);    Mode->Init( &Info[i] );    if (Fmt.Bits()==0x0 || Mode->Format().Bits()==Fmt.Bits()) {      Add_Mode( Mode );      Nb++;    }    else delete Mode;  }  XFree( Info );  return Nb;}int SKL_X11_VIDEO_I::Ping(){  Cleanup();  if (_Display_Name==0) _Display_Name = XDisplayName(0);  _XDisplay = XOpenDisplay(_Display_Name);  if (_XDisplay==0) return 0;  _Screen = DefaultScreen(_XDisplay); // TODO: should it be an option?  _Has_Shm = 0;#ifdef SKL_USE_SHM  if ( (XShmQueryExtension(_XDisplay)!=0) && (_Display_Name[0]!=':'))    fprintf( stderr, "Can't use SHM when display is redirected.\n" );  else    _Has_Shm = 1;#endif  _Has_DGA = 0;#ifdef SKL_USE_DGA  _Has_DGA = _DGA_Infos.Init(_XDisplay, _Screen);#endif  Clear_Modes();  Scan_Modes();  Set_Ok();  return 1;}//////////////////////////////////////////////////////////// Params//////////////////////////////////////////////////////////int SKL_X11_VIDEO_I::Set_Param(PARAM Opt,                                SKL_CST_STRING SValue,                               int IValue){  switch(Opt) {    case USE_DISPLAY: _Display_Name = SValue; return Ping();    case USE_SHM: _Use_Shm = (IValue!=0); break;    case USE_DGA: _Use_DGA = (IValue!=0); break;    case VSYNC:   _VSync = (IValue!=0);    break;    default: return 0;  }  return 1;}int SKL_X11_VIDEO_I::Get_Param(PARAM Opt,                                SKL_CST_STRING *SValue,                               int *IValue) const{  switch(Opt) {    case USE_DISPLAY: *SValue = _Display_Name; return 1;    case USE_SHM: *IValue = ((_Has_Shm&_Use_Shm)!=0); return 1;    case USE_DGA: *IValue = ((_Has_DGA&_Use_DGA)!=0); return 1;    case VSYNC:   *IValue = _VSync; return 1;    default: break;  }  return 0;}//////////////////////////////////////////////////////////// Fullscreen API//////////////////////////////////////////////////////////SKL_WINDOW *SKL_X11_VIDEO_I::Set_Fullscreen_Mode(const SKL_BTM *FMode,                                                 int Show){  const SKL_X11_WIN *Mode = (const SKL_X11_WIN *)FMode;  SKL_X11_RAW_WIN *Win;#ifdef SKL_USE_SHM  if (_Has_Shm & _Use_Shm) {    Win = new (Get_Mem()) SKL_X11_SHM_WIN( Mode );  }  else #endif    Win = new (Get_Mem()) SKL_X11_RAW_WIN( Mode );  if (!Win->Create_Window(Show)) {    delete Win; // Argh!    return 0;  }   return Win;}void SKL_X11_VIDEO_I::Shutdown_Fullscreen() {}//////////////////////////////////////////////////////////// Window API//////////////////////////////////////////////////////////SKL_WINDOW *SKL_X11_VIDEO_I::Open_Window(int W, int H, SKL_FORMAT Fmt,                                         int With_Backbuffer,                                         int Show){  const SKL_X11_WIN *Mode = (const SKL_X11_WIN *)Get_Fullscreen_Mode();  if (!Is_Fullscreen())    Mode = (const SKL_X11_WIN *)Get_Mode_Infos(Search_Best_Mode(W, H, Fmt));  SKL_X11_RAW_WIN *Win;#ifdef SKL_USE_SHM  if (_Has_Shm&_Use_Shm) {    Win = new (Get_Mem()) SKL_X11_SHM_WIN( Mode, W, H );  }  else #endif    Win = new (Get_Mem()) SKL_X11_RAW_WIN( Mode, W, H );  if (!Win->Create_Window(Show))  {    delete Win;  // Argh!    return 0;  }  return Win;}int SKL_X11_VIDEO_I::Needs_Conversion(const SKL_WINDOW *Win,                                      SKL_FORMAT Fmt) const{  SKL_ASSERT(Win!=0);  return !Win->Format().Is_Compatible_With(Fmt);}//////////////////////////////////////////////////////////// -- external symbol exported//////////////////////////////////////////////////////////#include "skl_syst/skl_dyn_load.h"SKL_DYN_FACTORY(SKL_X11_VIDEO_I) {  return (SKL_ANY)::new SKL_X11_VIDEO_I(SKL_MEM, "Drv X11");}//////////////////////////////////////////////////////////// SKL_X11_WIN//////////////////////////////////////////////////////////SKL_X11_WIN::SKL_X11_WIN(SKL_X11_VIDEO_I *Drv)  : SKL_WINDOW(Drv->Get_Mem())  , _Drv(Drv)  , _Depth(0)  , _Visual(0){}SKL_X11_WIN::~SKL_X11_WIN() {  SKL_ASSERT(_Drv!=0);}void SKL_X11_WIN::Init(XVisualInfo *Info){  Display *Dsp = Get_XDisplay();  int Screen = Get_Screen();  _Depth = Info->depth;  _Visual = Info->visual;  SKL_FORMAT Fmt = _Drv->Get_Visual_Format(Info);  int W = DisplayWidth( Dsp, Screen );  int H = DisplayHeight( Dsp, Screen );  Set_Virtual( W, H, Fmt );}void SKL_X11_WIN::Print_Infos() const{  SKL_BTM::Print_Infos();  printf( "  [Depth=%d Q=%d Visual=0x%8p]", _Depth, Quantum(), (SKL_BYTE*)_Visual );  if (_Visual)    printf( " (id=%d c=%d cmapsize=%d b/rgb=%d)",       (int)_Visual->visualid,        (int)_Visual->c_class,        (int)_Visual->map_entries,        (int)_Visual->bits_per_rgb );  printf( "\n");}//////////////////////////////////////////////////////////// -- Raw X11 calls. It's time for the Real Stuff :) -- ////////////////////////////////////////////////////////////#define X11_MASKS   StructureNotifyMask| ExposureMask |    \ KeyReleaseMask | KeyPressMask  |       \ ButtonPressMask | ButtonReleaseMask |  \ ButtonMotionMask | PointerMotionMask//////////////////////////////////////////////////////////// SKL_X11_RAW_WIN//////////////////////////////////////////////////////////SKL_X11_RAW_WIN::SKL_X11_RAW_WIN(const SKL_X11_WIN *w,                                  int W, int H)  : SKL_X11_WIN(w->Drv())  , _XImg(0)  , _Win(0)  , _Pixels(0)  , _XCMap(None)  , _Root_CMap(None)  , _Cells(0){  _Depth = w->Get_Depth();  _Visual = w->Get_Visual();  if (W==0) W = w->Width();  if (H==0) H = w->Height();  int BpS = ( W*w->Quantum() + 7) & ~7;  // pad to 8  Set_Virtual( W, H, w->Format(), 0, BpS, 0);//  Display *Dsp = Get_XDisplay();//  int Screen = Get_Screen();//  _XCMap = (Colormap)DefaultColormap( Dsp, Screen );}SKL_X11_RAW_WIN::~SKL_X11_RAW_WIN(){  Hide();  Cleanup();}void SKL_X11_RAW_WIN::Cleanup(){  Display *Dsp = Get_XDisplay();  if ( _XImg!=0 ) {    XDestroyImage( _XImg );    _XImg = 0;  }  if (_Root_CMap!=None) {    XFreeColormap( Dsp, _Root_CMap );    _Root_CMap = None;  }  if ( _Win!=(Window)0 )  {    if (_Cells) XFreeColors( Dsp, _XCMap, _Pixels, 256, 0 );    if (_XCMap!=None) XFreeColormap( Dsp, _XCMap );    if (_Pixels) Get_Mem()->Delete( _Pixels, 256*sizeof(*_Pixels) );    XFreeGC( Dsp, _GC );    XDestroyWindow( Dsp, _Win );    _Win = (Window)0;    _XCMap = None;    _Cells = 0;    _Pixels = 0;  }}void SKL_X11_RAW_WIN::Set_Name(SKL_CST_STRING Name) {  SKL_WINDOW::Set_Name( Name );  if (_Win!=0 && _Drv!=0)    XStoreName( _Drv->Get_XDisplay(), _Win, Name );}//////////////////////////////////////////////////////////int SKL_X11_RAW_WIN::Create_XCMap(){  SKL_ASSERT( _XCMap == (Colormap)None && _Pixels == 0 );  Display *Dsp = Get_XDisplay();  if ( Format().Depth()==1 )  {       _Pixels = (unsigned long*)Get_Mem()->New( 256*sizeof(unsigned long) );    _XCMap = XCreateColormap( Dsp, _Win, _Visual, AllocNone );    if (_Visual->c_class==PseudoColor) {      _Cells = XAllocColorCells( Dsp, _XCMap, 0, 0, 0, _Pixels, 256 );      if ( _Cells==0 ) return 0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线三级电影| 91麻豆精品91久久久久同性| 日韩 欧美一区二区三区| 亚洲欧美另类综合偷拍| 亚洲欧洲www| 国产精品毛片a∨一区二区三区 | 国产福利一区二区三区| 久久av中文字幕片| 国产精品91一区二区| 懂色av噜噜一区二区三区av| 成人精品在线视频观看| 99视频精品在线| 在线视频一区二区三| 欧美亚洲自拍偷拍| 91精品国产综合久久福利软件 | 日本91福利区| 国模娜娜一区二区三区| 成人动漫av在线| 91官网在线观看| 日韩一区二区在线看| 精品成人a区在线观看| 中文字幕第一区二区| 亚洲综合图片区| 免费观看日韩电影| 国产99久久久国产精品免费看| 成人免费视频app| 欧洲色大大久久| 久久女同精品一区二区| 中文字幕一区二区三区不卡| 亚洲午夜日本在线观看| 蜜臀va亚洲va欧美va天堂| 国产999精品久久久久久| 色悠久久久久综合欧美99| 欧美一二三区在线| 自拍偷拍欧美精品| 日本不卡一区二区| 99久久亚洲一区二区三区青草| 欧美三级一区二区| 国产日韩欧美精品综合| 亚洲国产精品自拍| 国产成人在线观看| 91精品欧美综合在线观看最新| 国产亚洲人成网站| 香蕉久久夜色精品国产使用方法 | 国产精品99久| 欧美日韩国产片| 国产精品美女久久福利网站| 亚洲综合一区二区三区| 国产高清精品久久久久| 欧美精品粉嫩高潮一区二区| 国产精品久久久久一区二区三区共 | 91网站最新地址| 精品免费日韩av| 午夜视频在线观看一区| 99re视频这里只有精品| 国产亚洲精品精华液| 免费在线看一区| 欧洲日韩一区二区三区| 专区另类欧美日韩| 成人综合婷婷国产精品久久| 日韩精品一区二区三区老鸭窝| 亚洲午夜久久久久久久久电影网| 成人高清免费在线播放| 久久久亚洲精华液精华液精华液| 五月激情综合色| 欧美性一区二区| 亚洲黄一区二区三区| jlzzjlzz亚洲女人18| 欧美国产禁国产网站cc| 狠狠色狠狠色合久久伊人| 欧美一卡二卡在线观看| 丝袜诱惑制服诱惑色一区在线观看| 色吧成人激情小说| 亚洲嫩草精品久久| 91丨porny丨最新| 中文字幕一区二区三区在线观看 | 亚洲欧美另类在线| 91视频.com| 亚洲免费色视频| 日本高清不卡一区| 亚洲国产综合色| 欧美日韩一区在线观看| 亚洲成人av电影| 欧美一级欧美三级| 麻豆国产精品一区二区三区| 欧美mv日韩mv亚洲| 国产高清精品在线| 亚洲人成网站影音先锋播放| 91成人在线观看喷潮| 亚洲mv大片欧洲mv大片精品| 欧美一级片免费看| 国产精品77777| 综合色天天鬼久久鬼色| 欧美色窝79yyyycom| 日韩精品一二三四| 久久久91精品国产一区二区三区| 成人免费看视频| 亚洲一区二区三区影院| 日韩欧美色综合| 成人小视频免费观看| 亚洲另类一区二区| 国产欧美日韩卡一| 99久久精品免费看| 五月天中文字幕一区二区| 日韩免费看的电影| 成人激情小说网站| 午夜视频在线观看一区二区三区 | 国产福利一区二区三区| 成人欧美一区二区三区白人| 欧美日韩国产免费一区二区 | 日本一区二区不卡视频| 欧美亚洲综合色| 国产综合久久久久久久久久久久| 亚洲人吸女人奶水| 欧美va亚洲va| 日本韩国欧美一区二区三区| 蜜臂av日日欢夜夜爽一区| 1000精品久久久久久久久| 欧美一区二区三区电影| 91亚洲精华国产精华精华液| 免费观看成人鲁鲁鲁鲁鲁视频| 中文字幕一区二区三区四区| 精品少妇一区二区三区日产乱码| 91色九色蝌蚪| 国产成人自拍高清视频在线免费播放| 亚洲国产美国国产综合一区二区| 国产日韩三级在线| 日韩欧美国产三级| 欧美午夜精品一区| 91在线小视频| 国产成人自拍在线| 极品少妇一区二区| 日本成人在线视频网站| 亚洲精品亚洲人成人网 | 亚洲欧洲综合另类| 久久久精品欧美丰满| 欧美一级片在线| 7777精品伊人久久久大香线蕉完整版 | 青青草97国产精品免费观看| 亚洲精品午夜久久久| 中文字幕一区av| 中文字幕欧美日本乱码一线二线| ...av二区三区久久精品| 久久麻豆一区二区| 久久麻豆一区二区| 久久综合九色欧美综合狠狠 | 久久久久综合网| 久久这里只有精品首页| 欧美成人女星排名| 精品国产a毛片| 日韩精品最新网址| 日韩精品一区二区三区视频| 884aa四虎影成人精品一区| 欧美日韩精品专区| 欧美高清激情brazzers| 91精品国产综合久久精品| 制服丝袜成人动漫| 日韩你懂的电影在线观看| 91精品免费观看| 精品久久久久一区二区国产| 精品久久五月天| 国产日韩欧美不卡| 亚洲欧洲无码一区二区三区| 亚洲精品视频免费看| 亚洲一区在线观看免费| 亚洲va国产天堂va久久en| 免费在线一区观看| 国产精品18久久久| 91在线观看一区二区| 色天天综合久久久久综合片| 精品视频在线免费| 日韩精品一区二区三区在线| 国产欧美精品一区aⅴ影院| 国产精品美女久久久久aⅴ| 亚洲精品老司机| 青青草国产精品亚洲专区无| 国产精品资源网| 91电影在线观看| 日韩精品一区二| 中文字幕日韩一区| 香蕉成人伊视频在线观看| 国产美女精品人人做人人爽| 99国产欧美久久久精品| 欧美日韩国产天堂| 国产欧美精品在线观看| 亚洲狠狠爱一区二区三区| 国产一区亚洲一区| 欧美在线不卡一区| 2021国产精品久久精品| 亚洲精品日韩综合观看成人91| 麻豆极品一区二区三区| 91丝袜美女网| 精品国产免费一区二区三区四区 | 久久久国产一区二区三区四区小说 | 久草这里只有精品视频| 99久久99久久精品免费看蜜桃| 777xxx欧美| 亚洲欧美日韩电影| 国模少妇一区二区三区| 欧美日韩国产成人在线免费|