MCPcopy Create free account
hub / github.com/clementgallet/libTAS / DispatchCallbackOutput

Function DispatchCallbackOutput

src/library/steam/CCallbackManager.cpp:117–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115}
116
117void DispatchCallbackOutput(enum steam_callback_type type, void *data, size_t data_size)
118{
119 struct call_output out;
120
121 if (type >= STEAM_CALLBACK_TYPE_MAX)
122 return;
123
124 if (data_size > INT_MAX) {
125 LOG(LL_ERROR, LCF_STEAM, "Callback %u payload too large: %zu bytes", type, data_size);
126 return;
127 }
128
129 out.type = type;
130 out.is_api_call = false;
131 out.is_handled = false;
132 out.io_failure = false;
133 out.api_call = 0;
134 out.data = nullptr;
135 if (data && data_size > 0) {
136 out.data = malloc(data_size);
137 if (!out.data) {
138 LOG(LL_ERROR, LCF_STEAM, "Failed to allocate %zu bytes for callback %u", data_size, type);
139 return;
140 }
141 memcpy(out.data, data, data_size);
142 }
143 out.data_size = data_size;
144
145 call_output_mutex.lock();
146 call_outputs.push_front(out);
147 call_output_mutex.unlock();
148}
149
150SteamAPICall_t AwaitApiCallResultOutput(void)
151{

Callers 1

Calls 3

mallocFunction · 0.85
lockMethod · 0.45
unlockMethod · 0.45

Tested by

no test coverage detected