void Wiimote::UpdateButtonsFromMessages(wm_core* buttons) { MessageStack messageStack = MessagePipe::Instance().FilteredStack('k', m_index + 1); if (!messageStack.IsEmpty()) { *buttons = 0; } std::string addRelease; while (!messageStack.IsEmpty()) { wm_core mask; std::string message = messageStack.Pop(); char code; int player; std::istringstream iss(message); iss >> player >> code >> mask; *buttons |= mask; if (mask == 0 && buttons != 0) { addRelease = message; } } if (addRelease.length() > 0) { messageStack.Push(addRelease); } }