diff --git a/src/xenia/kernel/objects/xevent.cc b/src/xenia/kernel/objects/xevent.cc index 3a6fd9a9c..8ef30bfd1 100644 --- a/src/xenia/kernel/objects/xevent.cc +++ b/src/xenia/kernel/objects/xevent.cc @@ -32,7 +32,7 @@ void XEvent::InitializeNative(void* native_ptr, X_DISPATCH_HEADER& header) { assert_null(native_handle_); bool manual_reset; - switch ((header.type_flags >> 24) & 0xFF) { + switch (header.type) { case 0x00: // EventNotificationObject (manual reset) manual_reset = true; break; diff --git a/src/xenia/kernel/xobject.cc b/src/xenia/kernel/xobject.cc index eb9c64e7d..ffb409ef2 100644 --- a/src/xenia/kernel/xobject.cc +++ b/src/xenia/kernel/xobject.cc @@ -198,7 +198,7 @@ object_ref XObject::GetNativeObject(KernelState* kernel_state, auto header = reinterpret_cast(native_ptr); if (as_type == -1) { - as_type = (header->type_flags >> 24) & 0xFF; + as_type = header->type; } if (header->wait_list_blink & 0x1) { diff --git a/src/xenia/kernel/xobject.h b/src/xenia/kernel/xobject.h index cebd70c68..2c8a2fdf4 100644 --- a/src/xenia/kernel/xobject.h +++ b/src/xenia/kernel/xobject.h @@ -29,7 +29,26 @@ class object_ref; // http://www.nirsoft.net/kernel_struct/vista/DISPATCHER_HEADER.html typedef struct { - xe::be type_flags; + struct { + uint8_t type; + + union { + uint8_t abandoned; + uint8_t absolute; + uint8_t npx_irql; + uint8_t signalling; + }; + union { + uint8_t size; + uint8_t hand; + }; + union { + uint8_t inserted; + uint8_t debug_active; + uint8_t dpc_active; + }; + }; + xe::be signal_state; xe::be wait_list_flink; xe::be wait_list_blink;