% notcurses_stop(3)
% nick black <nickblack@linux.com>
% v2.2.2

# NAME

notcurses_stop - free up resources and restore initial terminal state

# SYNOPSIS

**#include <notcurses/notcurses.h>**

**int notcurses_stop(struct notcurses* ***nc***);**

# DESCRIPTION

**notcurses_stop** frees up any resources associated with the
**struct notcurses** provided as **nc**, and attempts to restore the terminal to its
state prior to calling **notcurses_init(3)**. It also unregisters any signal
handlers put into place by **notcurses_init(3)**. **nc** must not be used
following the call, and all references to ncplanes, cells, etc. are
invalidated.

Once the terminal has been reset, a summary of runtime and performance is
printed, unless **NCOPTION_SUPPRESS_BANNERS** was provided to
**notcurses_init(3)**.

The first step taken by **notcurses_stop** is a call to the internal function
**notcurses_stop_minimal**. This is the same function called by the fatal
signal handlers installed in the absence of **NCOPTION_NO_QUIT_SIGHANDLERS**.
This function:

* Disables the Notcurses signal handlers
* Emits the **op** terminfo capability, if supported
* Emits the **sgr0** terminfo capability, if supported
* Emits the **oc** terminfo capability, if supported
* Emits the **rmcup** terminfo capability, if supported (and if
  **NCOPTION_NO_ALTERNATE_SCREEN** was not provided).
* Emits the **cnorm** terminfo capability, if supported

Respectively, these restore the default colorpair to its original value
(**op**), turn off all text attributes (**sgr0**), restore the default
palette (**oc**), exit the alternate screen (**rmcup**), and restore the
cursor to its default appearance (**cnorm**).

It is legal to pass **NULL** to **notcurses_stop**. This is a no-op.

# NOTES

Behavior is undefined if other threads are working with **nc** when or after
this function is called. It is unlikely to be good.

# RETURN VALUES

On success, 0 is returned. Otherwise, a negative value is returned.

# SEE ALSO

**notcurses(3)**,
**notcurses_init(3)**,
**terminfo(5)**
