# SwappyThreadFunctions

`#include <swappy_common.h>`

A structure enabling you to set how Swappy starts and joins threads by calling [Swappy_setThreadFunctions](https://developer.android.com/games/sdk/reference/frame-pacing/group/swappy-common#group__swappy__common_1gabf904a592bd36137613b842e651642f4).

## Summary

Usage of this functionality is optional.

| ### Public attributes ||
|---|---|
| `https://developer.android.com/games/sdk/reference/frame-pacing/struct/swappy-thread-functions#struct_swappy_thread_functions_1a4ff08dc0fa2b076510065b56c3756f68)(SwappyThreadId thread_id)` | `void(*` Thread join callback. |
| `https://developer.android.com/games/sdk/reference/frame-pacing/struct/swappy-thread-functions#struct_swappy_thread_functions_1a6720f73704f616d2cbf38ed8b7e11ae5)(SwappyThreadId thread_id)` | `bool(*` Thread joinable callback. |
| `https://developer.android.com/games/sdk/reference/frame-pacing/struct/swappy-thread-functions#struct_swappy_thread_functions_1ad3a1a180041a33d160bcff014d61b12d)(SwappyThreadId *thread_id, void *(*thread_func)(void *), void *user_data)` | `int(*` Thread start callback. |

## Public attributes

### join

```scdoc
void(* SwappyThreadFunctions::join)(SwappyThreadId thread_id)
```
Thread join callback.

This function is called by Swappy to join the thread with given id.

### joinable

```scdoc
bool(* SwappyThreadFunctions::joinable)(SwappyThreadId thread_id)
```
Thread joinable callback.

This function is called by Swappy to discover whether the thread with the given id is joinable.

### start

```scdoc
int(* SwappyThreadFunctions::start)(SwappyThreadId *thread_id, void *(*thread_func)(void *), void *user_data)
```
Thread start callback.

This function is called by Swappy to start thread_func on a new thread.

| Details ||
|---|---|
| Parameters | |---|---| | `user_data` | A value to be passed the thread function. If the thread was started, this function should set the thread_id and return 0. If the thread was not started, this function should return a non-zero value. | |