Avoid a generic event struct

This commit is contained in:
Chris Robinson
2020-12-15 21:32:01 -08:00
parent a08f68f213
commit 304ab8d890
3 changed files with 12 additions and 14 deletions
+7 -3
View File
@@ -89,10 +89,14 @@ static int EventThread(ALCcontext *context)
evt.u.bufcomp.count, static_cast<ALsizei>(msg.length()), msg.c_str(),
context->mEventParam);
}
else if((enabledevts&evt.EnumType) == evt.EnumType)
context->mEventCb(evt.u.user.type, evt.u.user.id, evt.u.user.param,
static_cast<ALsizei>(strlen(evt.u.user.msg)), evt.u.user.msg,
else if(evt.EnumType == EventType_Disconnected)
{
if(!(enabledevts&EventType_Disconnected))
continue;
context->mEventCb(AL_EVENT_TYPE_DISCONNECTED_SOFT, 0, 0,
static_cast<ALsizei>(strlen(evt.u.disconnect.msg)), evt.u.disconnect.msg,
context->mEventParam);
}
} while(evt_data.len != 0);
}
return 0;
+2 -5
View File
@@ -35,11 +35,8 @@ struct AsyncEvent {
ALuint count;
} bufcomp;
struct {
ALenum type;
ALuint id;
ALuint param;
ALchar msg[232];
} user;
ALchar msg[244];
} disconnect;
EffectState *mEffectState;
} u{};
+3 -6
View File
@@ -1974,17 +1974,14 @@ void ALCdevice::handleDisconnect(const char *msg, ...)
return;
AsyncEvent evt{EventType_Disconnected};
evt.u.user.type = AL_EVENT_TYPE_DISCONNECTED_SOFT;
evt.u.user.id = 0;
evt.u.user.param = 0;
va_list args;
va_start(args, msg);
int msglen{vsnprintf(evt.u.user.msg, sizeof(evt.u.user.msg), msg, args)};
int msglen{vsnprintf(evt.u.disconnect.msg, sizeof(evt.u.disconnect.msg), msg, args)};
va_end(args);
if(msglen < 0 || static_cast<size_t>(msglen) >= sizeof(evt.u.user.msg))
evt.u.user.msg[sizeof(evt.u.user.msg)-1] = 0;
if(msglen < 0 || static_cast<size_t>(msglen) >= sizeof(evt.u.disconnect.msg))
evt.u.disconnect.msg[sizeof(evt.u.disconnect.msg)-1] = 0;
IncrementRef(MixCount);
for(ALCcontext *ctx : *mContexts.load())