> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# chat_manager::start_processing_state_changes

> chat_manager::start_processing_state_changes

# chat\_manager::start\_processing\_state\_changes

Retrieves an array of all Game Chat state changes to process since the last such call.

## Syntax

```cpp theme={null}
void start_processing_state_changes(  
    uint32_t* stateChangeCount,  
    game_chat_state_change_array* stateChanges  
)  
```

### Parameters

*stateChangeCount*   \_Out\_<br />Type: uint32\_t\*

A place to write the number of game\_chat\_state\_change entries for the app to handle in the *stateChanges* array.

*stateChanges*   \_Outptr\_result\_buffer\_(\*stateChangeCount)<br />Type: game\_chat\_state\_change\_array\*

A place to store a pointer to the array of all game\_chat\_state\_change entries for the app to handle and then pass to chat\_manager::finish\_processing\_state\_changes().

### Return value

Type: void

## Remarks

This method provides a list of all changes currently available for the app since the last call to this method. The app should use the provided array of 0 or more changes to update its own state or UI, and then call chat\_manager::finish\_processing\_state\_changes() with them in a timely manner.

If you call chat\_manager::start\_processing\_state\_changes() again without having called chat\_manager::finish\_processing\_state\_changes() on the list of state change objects returned by a previous call, this method will throw an exception. You must always call chat\_manager::finish\_processing\_state\_changes() with the values returned by chat\_manager::start\_processing\_state\_changes(), even if it returns 0 state change entries.

Once chat\_manager::start\_processing\_state\_changes() has been called, chat\_manager::remove\_user() must not be called until after the corresponding call to chat\_manager::finish\_processing\_state\_changes(). Calling chat\_manager::remove\_user() while state changes are being processed will invalidate the memory associated with the removed user, even if a pointer to the memory associated with that user was returned in a state change.

## Requirements

**Header:** GameChat2.h

**Supported platforms:** Windows, XBOX One family consoles and XBOX Series consoles

## See also

[chat\_manager](/reference/chat/gamechat2/classes/chat_manager/chat_manager)<br />[game\_chat\_state\_change](/reference/chat/gamechat2/structs/game_chat_state_change)<br />[game\_chat\_state\_change\_array](/reference/chat/gamechat2/structs/game_chat_state_change)<br />[chat\_manager::finish\_processing\_state\_changes](/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_finish_processing_state_changes)<br />[chat\_manager::remove\_user](/reference/chat/gamechat2/classes/chat_manager/methods/chat_manager_remove_user)
