=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/alerts.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/tmux/alerts.c 2015/12/07 09:47:41 1.8 --- src/usr.bin/tmux/alerts.c 2016/01/16 00:36:53 1.9 *************** *** 1,4 **** ! /* $OpenBSD: alerts.c,v 1.8 2015/12/07 09:47:41 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: alerts.c,v 1.9 2016/01/16 00:36:53 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott *************** *** 29,34 **** --- 29,35 ---- void alerts_callback(int, short, void *); void alerts_reset(struct window *); + void alerts_run_hook(struct session *, struct winlink *, int); int alerts_check_all(struct session *, struct winlink *); int alerts_check_bell(struct session *, struct winlink *); int alerts_check_activity(struct session *, struct winlink *); *************** *** 55,62 **** RB_FOREACH(w, windows, &windows) { RB_FOREACH(s, sessions, &sessions) { - if (s->flags & SESSION_UNATTACHED) - continue; RB_FOREACH(wl, winlinks, &s->windows) { if (wl->window != w) continue; --- 56,61 ---- *************** *** 73,78 **** --- 72,93 ---- alerts_fired = 0; } + void + alerts_run_hook(struct session *s, struct winlink *wl, int flags) + { + struct cmd_find_state fs; + + if (cmd_find_from_winlink(&fs, s, wl) != 0) + return; + + if (flags & WINDOW_BELL) + hooks_run(s->hooks, NULL, &fs, "alert-bell"); + if (flags & WINDOW_SILENCE) + hooks_run(s->hooks, NULL, &fs, "alert-silence"); + if (flags & WINDOW_ACTIVITY) + hooks_run(s->hooks, NULL, &fs, "alert-activity"); + } + int alerts_check_all(struct session *s, struct winlink *wl) { *************** *** 81,88 **** alerts = alerts_check_bell(s, wl); alerts |= alerts_check_activity(s, wl); alerts |= alerts_check_silence(s, wl); ! if (alerts != 0) server_status_session(s); return (alerts); } --- 96,105 ---- alerts = alerts_check_bell(s, wl); alerts |= alerts_check_activity(s, wl); alerts |= alerts_check_silence(s, wl); ! if (alerts != 0) { ! alerts_run_hook(s, wl, alerts); server_status_session(s); + } return (alerts); }