i3
Macros | Functions | Variables
sighandler.c File Reference
#include "all.h"
#include <ev.h>
#include <iconv.h>
#include <signal.h>
#include <sys/wait.h>
#include <xcb/xcb_event.h>
#include <X11/keysym.h>
Include dependency graph for sighandler.c:

Go to the source code of this file.

Macros

#define I3__FILE__   "sighandler.c"
 

Functions

static void open_popups (void)
 
static int backtrace (void)
 
static int sig_draw_window (xcb_window_t win, int width, int height, int font_height, i3String **crash_text_i3strings)
 
static int sig_handle_key_press (void *ignored, xcb_connection_t *conn, xcb_key_press_event_t *event)
 
static xcb_window_t open_input_window (xcb_connection_t *conn, Rect screen_rect, uint32_t width, uint32_t height)
 
void handle_signal (int sig, siginfo_t *info, void *data)
 
void setup_signal_handler (void)
 Setup signal handlers to safely handle SIGSEGV and SIGFPE. More...
 

Variables

static xcb_gcontext_t pixmap_gc
 
static xcb_pixmap_t pixmap
 
static int raised_signal
 
static char * crash_text []
 
static int crash_text_longest = 5
 
static int backtrace_string_index = 3
 
static int backtrace_done = 0
 

Macro Definition Documentation

#define I3__FILE__   "sighandler.c"

Definition at line 2 of file sighandler.c.

Function Documentation

static int backtrace ( void  )
static

Definition at line 47 of file sighandler.c.

References DLOG, FREE, sasprintf(), and start_argv.

Referenced by sig_handle_key_press().

Here is the call graph for this function:

void handle_signal ( int  sig,
siginfo_t *  info,
void *  data 
)

Definition at line 287 of file sighandler.c.

References conn, DLOG, open_popups(), raised_signal, and sig_handle_key_press().

Referenced by setup_signal_handler().

Here is the call graph for this function:

static xcb_window_t open_input_window ( xcb_connection_t *  conn,
Rect  screen_rect,
uint32_t  width,
uint32_t  height 
)
static

Definition at line 206 of file sighandler.c.

References Rect::height, root, Rect::width, x, Rect::x, y, and Rect::y.

Referenced by open_popups().

static void open_popups ( void  )
static
void setup_signal_handler ( void  )

Setup signal handlers to safely handle SIGSEGV and SIGFPE.

Definition at line 313 of file sighandler.c.

References ELOG, and handle_signal().

Referenced by main().

Here is the call graph for this function:

static int sig_draw_window ( xcb_window_t  win,
int  width,
int  height,
int  font_height,
i3String **  crash_text_i3strings 
)
static

Definition at line 130 of file sighandler.c.

References backtrace_done, backtrace_string_index, conn, draw_text(), get_colorpixel(), pixmap, pixmap_gc, set_font_colors(), and width.

Referenced by open_popups().

Here is the call graph for this function:

static int sig_handle_key_press ( void *  ignored,
xcb_connection_t *  conn,
xcb_key_press_event_t *  event 
)
static

Definition at line 172 of file sighandler.c.

References backtrace(), backtrace_done, DLOG, i3_restart(), keysyms, open_popups(), state, and xcb_numlock_mask.

Referenced by handle_signal().

Here is the call graph for this function:

Variable Documentation

int backtrace_done = 0
static

Definition at line 41 of file sighandler.c.

Referenced by sig_draw_window(), and sig_handle_key_press().

int backtrace_string_index = 3
static

Definition at line 40 of file sighandler.c.

Referenced by sig_draw_window().

char* crash_text[]
static
Initial value:
= {
"i3 just crashed.",
"To debug this problem, either attach gdb now",
"or press",
"- 'b' to save a backtrace (needs GDB),",
"- 'r' to restart i3 in-place or",
"- 'f' to forget the current layout and restart"
}

Definition at line 31 of file sighandler.c.

Referenced by open_popups().

int crash_text_longest = 5
static

Definition at line 39 of file sighandler.c.

Referenced by open_popups().

xcb_pixmap_t pixmap
static

Definition at line 28 of file sighandler.c.

Referenced by open_popups(), and sig_draw_window().

xcb_gcontext_t pixmap_gc
static

Definition at line 27 of file sighandler.c.

Referenced by open_popups(), and sig_draw_window().

int raised_signal
static

Definition at line 29 of file sighandler.c.

Referenced by handle_signal().