---
name: "Tk_FreeGC"
section: "3"
platform: "linux"
package: "tk"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Tk_FreeGC"
---

# Tk\_FreeGC(3)

maintain database of read-only graphics contexts

```

```

## NAME

Tk\_GetGC, Tk\_FreeGC - maintain database of read-only graphics contexts

## SYNOPSIS

```
#include <tk.h>

GC
Tk_GetGC(tkwin, valueMask, valuePtr)

Tk_FreeGC(display, gc)
```

## ARGUMENTS

- Tk\_Window *tkwin* (in)

  Token for window in which the graphics context will be used.

- unsigned long *valueMask* (in)

  Mask of bits (such as **GCForeground** or **GCStipple**) indicating which fields of *\*valuePtr* are valid.

- XGCValues *\*valuePtr* (in)

  Pointer to structure describing the desired values for the graphics context.

- Display *\*display* (in)

  Display for which *gc* was allocated.

- GC *gc* (in)

  X identifier for graphics context that is no longer needed. Must have been allocated by **Tk\_GetGC**.

  ```

  ```

## DESCRIPTION

**Tk\_GetGC** and **Tk\_FreeGC** manage a collection of graphics contexts being used by an application.  The procedures allow graphics contexts to be shared, thereby avoiding the server overhead that would be incurred if a separate GC were created for each use.  **Tk\_GetGC** takes arguments describing the desired graphics context and returns an X identifier for a GC that fits the description.  The graphics context that is returned will have default values in all of the fields not specified explicitly by *valueMask* and *valuePtr*.

**Tk\_GetGC** maintains a database of all the graphics contexts it has created.  Whenever possible, a call to **Tk\_GetGC** will return an existing graphics context rather than creating a new one.  This approach can substantially reduce server overhead, so **Tk\_GetGC** should generally be used in preference to the Xlib procedure **XCreateGC**, which creates a new graphics context on each call.

Since the return values of **Tk\_GetGC** are shared, callers should never modify the graphics contexts returned by **Tk\_GetGC**. If a graphics context must be modified dynamically, then it should be created by calling **XCreateGC** instead of **Tk\_GetGC**.

When a graphics context is no longer needed, **Tk\_FreeGC** should be called to release it. There should be exactly one call to **Tk\_FreeGC** for each call to **Tk\_GetGC**. When a graphics context is no longer in use anywhere (i.e. it has been freed as many times as it has been gotten) **Tk\_FreeGC** will release it to the X server and delete it from the database.

## KEYWORDS

graphics context
