Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbhid/multimedia/multimedia.c

    r5f6e25e r5203e256  
    5454
    5555// FIXME: remove this header
    56 #include <abi/ipc/methods.h>
     56#include <kernel/ipc/ipc_methods.h>
    5757
    5858#define NAME "multimedia-keys"
     
    167167/*----------------------------------------------------------------------------*/
    168168
     169static void usb_multimedia_free(usb_multimedia_t **multim_dev)
     170{
     171        if (multim_dev == NULL || *multim_dev == NULL) {
     172                return;
     173        }
     174       
     175        // hangup phone to the console
     176        async_obsolete_hangup((*multim_dev)->console_phone);
     177
     178        free(*multim_dev);
     179        *multim_dev = NULL;
     180}
     181
     182/*----------------------------------------------------------------------------*/
     183
    169184static int usb_multimedia_create_function(usb_hid_dev_t *hid_dev,
    170185    usb_multimedia_t *multim_dev)
    171186{
    172         /* Create the exposed function. */
     187        /* Create the function exposed under /dev/devices. */
    173188        ddf_fun_t *fun = ddf_fun_create(hid_dev->usb_dev->ddf_dev, fun_exposed,
    174189            NAME);
     
    190205        }
    191206       
    192         usb_log_debug("%s function created (handle: %" PRIun ").\n",
     207        usb_log_debug("%s function created (jandle: %" PRIun ").\n",
    193208            NAME, fun->handle);
    194209       
    195         rc = ddf_fun_add_to_category(fun, "keyboard");
     210        rc = ddf_fun_add_to_class(fun, "keyboard");
    196211        if (rc != EOK) {
    197212                usb_log_error(
    198                     "Could not add DDF function to category 'keyboard': %s.\n",
     213                    "Could not add DDF function to class 'keyboard': %s.\n",
    199214                    str_error(rc));
    200215                // TODO: Can / should I destroy the DDF function?
     
    232247       
    233248        int rc = usb_multimedia_create_function(hid_dev, multim_dev);
    234         if (rc != EOK)
     249        if (rc != EOK) {
     250                usb_multimedia_free(&multim_dev);
    235251                return rc;
     252        }
    236253       
    237254        usb_log_debug(NAME " HID/multimedia structure initialized.\n");
     
    250267        if (data != NULL) {
    251268                usb_multimedia_t *multim_dev = (usb_multimedia_t *)data;
    252                 // hangup phone to the console
    253                 async_obsolete_hangup(multim_dev->console_phone);
     269                usb_multimedia_free(&multim_dev);
    254270        }
    255271}
Note: See TracChangeset for help on using the changeset viewer.