From e0f0271ae6e340b3fa3d9c92f484b847a8332d54 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Fri, 3 Jun 2011 20:55:14 +0000 Subject: [PATCH] Use the appropriate initialize*() method instead of setting up the structure manually. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41889 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/device/Joystick.cpp | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/src/kits/device/Joystick.cpp b/src/kits/device/Joystick.cpp index 9def31451c..768ad1b696 100644 --- a/src/kits/device/Joystick.cpp +++ b/src/kits/device/Joystick.cpp @@ -163,20 +163,19 @@ BJoystick::Open(const char *portName, bool enhanced) if (variableJoystick == NULL) return B_NO_MEMORY; + status_t result; if (supportsVariable) { // The driver supports arbitrary controls. - variableJoystick->axis_count = fJoystickInfo->module_info.num_axes; - variableJoystick->hat_count = fJoystickInfo->module_info.num_hats; - variableJoystick->button_blocks - = (fJoystickInfo->module_info.num_buttons + 31) / 32; + result = variableJoystick->initialize( + fJoystickInfo->module_info.num_axes, + fJoystickInfo->module_info.num_hats, + fJoystickInfo->module_info.num_buttons); } else { // The driver doesn't support our variable requests so we construct // a data structure that is compatible with extended_joystick and // just use that in reads. This allows us to use a single data // format internally but be compatible with both inputs. - variableJoystick->axis_count = MAX_AXES; - variableJoystick->hat_count = MAX_HATS; - variableJoystick->button_blocks = (MAX_BUTTONS + 31) / 32; + result = variableJoystick->initialize_to_extended_joystick(); // Also ensure that we don't read over those boundaries. if (fJoystickInfo->module_info.num_axes > MAX_AXES) @@ -187,26 +186,11 @@ BJoystick::Open(const char *portName, bool enhanced) fJoystickInfo->module_info.num_buttons = MAX_BUTTONS; } - variableJoystick->data_size = sizeof(bigtime_t) // timestamp - + variableJoystick->button_blocks * sizeof(uint32) // bitmaps - + variableJoystick->axis_count * sizeof(int16) // axis values - + variableJoystick->hat_count * sizeof(uint8); // hat values - - variableJoystick->data - = (uint8 *)malloc(variableJoystick->data_size); - if (variableJoystick->data == NULL) { + if (result != B_OK) { delete variableJoystick; - return B_NO_MEMORY; + return result; } - // fill in the convenience pointers - variableJoystick->timestamp = (bigtime_t *)variableJoystick->data; - variableJoystick->buttons = (uint32 *)(&variableJoystick->timestamp[1]); - variableJoystick->axes = (int16 *)(&variableJoystick->buttons[ - variableJoystick->button_blocks]); - variableJoystick->hats = (uint8 *)(&variableJoystick->axes[ - variableJoystick->axis_count]); - if (!fJoystickData->AddItem(variableJoystick)) { free(variableJoystick->data); delete variableJoystick;