---
name: "ALLEGRO_STATE"
section: "3"
platform: "linux"
package: "allegro"
version: "5.2.11.3-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ALLEGRO_STATE"
---

# ALLEGRO\_STATE(3)

Allegro 5 API

## NAME

ALLEGRO\_STATE - Allegro 5 API

## SYNOPSIS

-

  ```
  typedef struct ALLEGRO_STATE ALLEGRO_STATE;
  ```

## DESCRIPTION

Opaque type which is passed to [al\_store\_state(3)](/al_store_state/3.md)/[al\_restore\_state(3)](/al_restore_state/3.md).

The various state kept internally by Allegro can be displayed like this:

-

  ```
    global
        active system driver
            current config
    per thread
        new bitmap params
        new display params
        active file interface
        errno
        current blending mode
        current display
            deferred drawing
        current target bitmap
            current transformation
            current projection transformation
            current clipping rectangle
            bitmap locking
            current shader
  ```

In general, the only real global state is the active system driver. All other global state is per-thread, so if your application has multiple separate threads they never will interfere with each other. (Except if there are objects accessed by multiple threads of course. Usually you want to minimize that though and for the remaining cases use synchronization primitives described in the threads section or events described in the events section to control inter-thread communication.)
