x11_common.c
来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C语言 代码 · 共 2,222 行 · 第 1/5 页
C
2,222 行
} mScreen = DefaultScreen(mDisplay); // screen ID mRootWin = RootWindow(mDisplay, mScreen); // root window ID init_atoms();#ifdef HAVE_XF86VM { int clock; XF86VidModeGetModeLine(mDisplay, mScreen, &clock, &modeline); if (!vo_screenwidth) vo_screenwidth = modeline.hdisplay; if (!vo_screenheight) vo_screenheight = modeline.vdisplay; }#endif { if (!vo_screenwidth) vo_screenwidth = DisplayWidth(mDisplay, mScreen); if (!vo_screenheight) vo_screenheight = DisplayHeight(mDisplay, mScreen); } // get color depth (from root window, or the best visual): XGetWindowAttributes(mDisplay, mRootWin, &attribs); depth = attribs.depth; if (depth != 15 && depth != 16 && depth != 24 && depth != 32) { Visual *visual; depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual); if (depth != -1) mXImage = XCreateImage(mDisplay, visual, depth, ZPixmap, 0, NULL, 1, 1, 8, 1); } else mXImage = XGetImage(mDisplay, mRootWin, 0, 0, 1, 1, AllPlanes, ZPixmap); vo_depthonscreen = depth; // display depth on screen // get bits/pixel from XImage structure: if (mXImage == NULL) { mask = 0; } else { /* * for the depth==24 case, the XImage structures might use * 24 or 32 bits of data per pixel. The global variable * vo_depthonscreen stores the amount of data per pixel in the * XImage structure! * * Maybe we should rename vo_depthonscreen to (or add) vo_bpp? */ bpp = mXImage->bits_per_pixel; if ((vo_depthonscreen + 7) / 8 != (bpp + 7) / 8) vo_depthonscreen = bpp; // by A'rpi mask = mXImage->red_mask | mXImage->green_mask | mXImage->blue_mask; mp_msg(MSGT_VO, MSGL_V, "vo: X11 color mask: %X (R:%lX G:%lX B:%lX)\n", mask, mXImage->red_mask, mXImage->green_mask, mXImage->blue_mask); XDestroyImage(mXImage); } if (((vo_depthonscreen + 7) / 8) == 2) { if (mask == 0x7FFF) vo_depthonscreen = 15; else if (mask == 0xFFFF) vo_depthonscreen = 16; }// XCloseDisplay( mDisplay );/* slightly improved local display detection AST */ if (strncmp(dispName, "unix:", 5) == 0) dispName += 4; else if (strncmp(dispName, "localhost:", 10) == 0) dispName += 9; if (*dispName == ':' && atoi(dispName + 1) < 10) mLocalDisplay = 1; else mLocalDisplay = 0; mp_msg(MSGT_VO, MSGL_V, "vo: X11 running at %dx%d with depth %d and %d bpp (\"%s\" => %s display)\n", vo_screenwidth, vo_screenheight, depth, vo_depthonscreen, dispName, mLocalDisplay ? "local" : "remote"); vo_wm_type = vo_wm_detect(); vo_fs_type = vo_x11_get_fs_type(vo_wm_type); fstype_dump(vo_fs_type); saver_off(mDisplay); return 1;}void vo_uninit(void){ if (!mDisplay) { mp_msg(MSGT_VO, MSGL_V, "vo: x11 uninit called but X11 not inited..\n"); return; }// if( !vo_depthonscreen ) return; mp_msg(MSGT_VO, MSGL_V, "vo: uninit ...\n"); XSetErrorHandler(NULL); XCloseDisplay(mDisplay); vo_depthonscreen = 0; mDisplay = NULL;}#include "osdep/keycodes.h"#include "wskeys.h"#ifdef XF86XK_AudioPausestatic void vo_x11_putkey_ext(int keysym){ switch (keysym) { case XF86XK_AudioPause: mplayer_put_key(KEY_PAUSE); break; case XF86XK_AudioStop: mplayer_put_key(KEY_STOP); break; case XF86XK_AudioPrev: mplayer_put_key(KEY_PREV); break; case XF86XK_AudioNext: mplayer_put_key(KEY_NEXT); break; case XF86XK_AudioLowerVolume: mplayer_put_key(KEY_VOLUME_DOWN); break; case XF86XK_AudioRaiseVolume: mplayer_put_key(KEY_VOLUME_UP); break; default: break; }}#endifvoid vo_x11_putkey(int key){ switch (key) { case wsLeft: mplayer_put_key(KEY_LEFT); break; case wsRight: mplayer_put_key(KEY_RIGHT); break; case wsUp: mplayer_put_key(KEY_UP); break; case wsDown: mplayer_put_key(KEY_DOWN); break; case wsSpace: mplayer_put_key(' '); break; case wsEscape: mplayer_put_key(KEY_ESC); break; case wsTab: mplayer_put_key(KEY_TAB); break; case wsEnter: mplayer_put_key(KEY_ENTER); break; case wsBackSpace: mplayer_put_key(KEY_BS); break; case wsDelete: mplayer_put_key(KEY_DELETE); break; case wsInsert: mplayer_put_key(KEY_INSERT); break; case wsHome: mplayer_put_key(KEY_HOME); break; case wsEnd: mplayer_put_key(KEY_END); break; case wsPageUp: mplayer_put_key(KEY_PAGE_UP); break; case wsPageDown: mplayer_put_key(KEY_PAGE_DOWN); break; case wsF1: mplayer_put_key(KEY_F + 1); break; case wsF2: mplayer_put_key(KEY_F + 2); break; case wsF3: mplayer_put_key(KEY_F + 3); break; case wsF4: mplayer_put_key(KEY_F + 4); break; case wsF5: mplayer_put_key(KEY_F + 5); break; case wsF6: mplayer_put_key(KEY_F + 6); break; case wsF7: mplayer_put_key(KEY_F + 7); break; case wsF8: mplayer_put_key(KEY_F + 8); break; case wsF9: mplayer_put_key(KEY_F + 9); break; case wsF10: mplayer_put_key(KEY_F + 10); break; case wsF11: mplayer_put_key(KEY_F + 11); break; case wsF12: mplayer_put_key(KEY_F + 12); break; case wsMinus: case wsGrayMinus: mplayer_put_key('-'); break; case wsPlus: case wsGrayPlus: mplayer_put_key('+'); break; case wsGrayMul: case wsMul: mplayer_put_key('*'); break; case wsGrayDiv: case wsDiv: mplayer_put_key('/'); break; case wsLess: mplayer_put_key('<'); break; case wsMore: mplayer_put_key('>'); break; case wsGray0: mplayer_put_key(KEY_KP0); break; case wsGrayEnd: case wsGray1: mplayer_put_key(KEY_KP1); break; case wsGrayDown: case wsGray2: mplayer_put_key(KEY_KP2); break; case wsGrayPgDn: case wsGray3: mplayer_put_key(KEY_KP3); break; case wsGrayLeft: case wsGray4: mplayer_put_key(KEY_KP4); break; case wsGray5Dup: case wsGray5: mplayer_put_key(KEY_KP5); break; case wsGrayRight: case wsGray6: mplayer_put_key(KEY_KP6); break; case wsGrayHome: case wsGray7: mplayer_put_key(KEY_KP7); break; case wsGrayUp: case wsGray8: mplayer_put_key(KEY_KP8); break; case wsGrayPgUp: case wsGray9: mplayer_put_key(KEY_KP9); break; case wsGrayDecimal: mplayer_put_key(KEY_KPDEC); break; case wsGrayInsert: mplayer_put_key(KEY_KPINS); break; case wsGrayDelete: mplayer_put_key(KEY_KPDEL); break; case wsGrayEnter: mplayer_put_key(KEY_KPENTER); break; case wsGrave: mplayer_put_key('`'); break; case wsTilde: mplayer_put_key('~'); break; case wsExclSign: mplayer_put_key('!'); break; case wsAt: mplayer_put_key('@'); break; case wsHash: mplayer_put_key('#'); break; case wsDollar: mplayer_put_key('$'); break; case wsPercent: mplayer_put_key('%'); break; case wsCircumflex: mplayer_put_key('^'); break; case wsAmpersand: mplayer_put_key('&'); break; case wsobracket: mplayer_put_key('('); break; case wscbracket: mplayer_put_key(')'); break; case wsUnder: mplayer_put_key('_'); break; case wsocbracket: mplayer_put_key('{'); break; case wsccbracket: mplayer_put_key('}'); break; case wsColon: mplayer_put_key(':'); break; case wsSemicolon: mplayer_put_key(';'); break; case wsDblQuote: mplayer_put_key('\"'); break; case wsAcute: mplayer_put_key('\''); break; case wsComma: mplayer_put_key(','); break; case wsPoint: mplayer_put_key('.'); break; case wsQuestSign: mplayer_put_key('?'); break; case wsBSlash: mplayer_put_key('\\'); break; case wsPipe: mplayer_put_key('|'); break; case wsEqual: mplayer_put_key('='); break; case wsosbrackets: mplayer_put_key('['); break; case wscsbrackets: mplayer_put_key(']'); break; default: if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z') || (key >= '0' && key <= '9')) mplayer_put_key(key); }}// ----- Motif header: -------#define MWM_HINTS_FUNCTIONS (1L << 0)#define MWM_HINTS_DECORATIONS (1L << 1)#define MWM_HINTS_INPUT_MODE (1L << 2)#define MWM_HINTS_STATUS (1L << 3)#define MWM_FUNC_ALL (1L << 0)#define MWM_FUNC_RESIZE (1L << 1)#define MWM_FUNC_MOVE (1L << 2)#define MWM_FUNC_MINIMIZE (1L << 3)#define MWM_FUNC_MAXIMIZE (1L << 4)#define MWM_FUNC_CLOSE (1L << 5)#define MWM_DECOR_ALL (1L << 0)#define MWM_DECOR_BORDER (1L << 1)#define MWM_DECOR_RESIZEH (1L << 2)#define MWM_DECOR_TITLE (1L << 3)#define MWM_DECOR_MENU (1L << 4)#define MWM_DECOR_MINIMIZE (1L << 5)#define MWM_DECOR_MAXIMIZE (1L << 6)#define MWM_INPUT_MODELESS 0#define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1#define MWM_INPUT_SYSTEM_MODAL 2#define MWM_INPUT_FULL_APPLICATION_MODAL 3#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL#define MWM_TEAROFF_WINDOW (1L<<0)typedef struct{ long flags; long functions; long decorations; long input_mode; long state;} MotifWmHints;static MotifWmHints vo_MotifWmHints;static Atom vo_MotifHints = None;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)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?