Mercurial > mplayer.hg
changeset 18149:163fe5c2577d
Register for window-manager delete window events and quit MPlayer.
slightly modified patch from Rickard Narstrom (rickard narstrom at gmail com)
author | reimar |
---|---|
date | Wed, 19 Apr 2006 15:58:10 +0000 |
parents | 280f93388ac3 |
children | 710d4bc5f8c9 |
files | libvo/x11_common.c |
diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/x11_common.c Wed Apr 19 15:50:37 2006 +0000 +++ b/libvo/x11_common.c Wed Apr 19 15:58:10 2006 +0000 @@ -100,6 +100,8 @@ static Atom XA_WIN_LAYER; static Atom XA_WIN_HINTS; static Atom XA_BLACKBOX_PID; +static Atom XAWM_PROTOCOLS; +static Atom XAWM_DELETE_WINDOW; #define XA_INIT(x) XA##x = XInternAtom(mDisplay, #x, False) @@ -357,6 +359,8 @@ XA_INIT(_WIN_LAYER); XA_INIT(_WIN_HINTS); XA_INIT(_BLACKBOX_PID); + XA_INIT(WM_PROTOCOLS); + XA_INIT(WM_DELETE_WINDOW); } void update_xinerama_info(void) { @@ -1137,6 +1141,11 @@ XSetWMNormalHints(mDisplay, vo_window, &vo_hint); vo_fs_flip = 0; break; + case ClientMessage: + if (Event.xclient.message_type == XAWM_PROTOCOLS && + Event.xclient.data.l[0] == XAWM_DELETE_WINDOW) + mplayer_put_key(KEY_CLOSE_WIN); + break; } } return ret; @@ -1241,6 +1250,7 @@ ret_win = XCreateWindow(mDisplay, mRootWin, x, y, width, height, 0, depth, CopyFromParent, vis, xswamask, &xswa); + XSetWMProtocols(mDisplay, ret_win, &XAWM_DELETE_WINDOW, 1); if (!f_gc) f_gc = XCreateGC(mDisplay, ret_win, 0, 0); XSetForeground(mDisplay, f_gc, 0);