Implement missing xkb_state_ref and add return value
xkb_state_ref was missing. Also modify the _ref functions to return the object instead of being void. This is a useful idiom: struct my_object my_object_new(struct xkb_state *state) { [...] my_object->state = xkb_state_ref(state); [...] } Essentially "taking" a reference, such that you don't forget to increment it and it's one line less (see example in our own code). A case could also be made for _unref to return the object or NULL, but this is quite uncommon. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb_keymap changes.]master
parent
b08629f92b
commit
467d7bb64e
|
@ -247,7 +247,7 @@ xkb_context_include_path_get(struct xkb_context *context, unsigned int index);
|
|||
/**
|
||||
* Takes a new reference on an XKB context.
|
||||
*/
|
||||
_X_EXPORT void
|
||||
_X_EXPORT struct xkb_context *
|
||||
xkb_context_ref(struct xkb_context *context);
|
||||
|
||||
/**
|
||||
|
@ -315,7 +315,7 @@ xkb_map_new_from_string(struct xkb_context *context,
|
|||
/**
|
||||
* Takes a new reference on a keymap.
|
||||
*/
|
||||
_X_EXPORT extern void
|
||||
_X_EXPORT extern struct xkb_keymap *
|
||||
xkb_map_ref(struct xkb_keymap *xkb);
|
||||
|
||||
/**
|
||||
|
@ -412,9 +412,9 @@ _X_EXPORT struct xkb_state *
|
|||
xkb_state_new(struct xkb_keymap *xkb);
|
||||
|
||||
/**
|
||||
* Adds a reference to a state object, so it will not be freed until unref.
|
||||
* Takes a new reference on a state object.
|
||||
*/
|
||||
_X_EXPORT void
|
||||
_X_EXPORT struct xkb_state *
|
||||
xkb_state_ref(struct xkb_state *state);
|
||||
|
||||
/**
|
||||
|
|
|
@ -266,8 +266,7 @@ XkbcAllocKeyboard(struct xkb_context *context)
|
|||
return NULL;
|
||||
|
||||
xkb->refcnt = 1;
|
||||
xkb_context_ref(context);
|
||||
xkb->context = context;
|
||||
xkb->context = xkb_context_ref(context);
|
||||
|
||||
return xkb;
|
||||
}
|
||||
|
|
|
@ -158,10 +158,11 @@ xkb_context_include_path_get(struct xkb_context *context, unsigned int idx)
|
|||
/**
|
||||
* Take a new reference on the context.
|
||||
*/
|
||||
void
|
||||
struct xkb_context *
|
||||
xkb_context_ref(struct xkb_context *context)
|
||||
{
|
||||
context->refcnt++;
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
10
src/state.c
10
src/state.c
|
@ -472,12 +472,18 @@ xkb_state_new(struct xkb_keymap *xkb)
|
|||
return NULL;
|
||||
|
||||
ret->refcnt = 1;
|
||||
ret->xkb = xkb;
|
||||
xkb_map_ref(xkb);
|
||||
ret->xkb = xkb_map_ref(xkb);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct xkb_state *
|
||||
xkb_state_ref(struct xkb_state *state)
|
||||
{
|
||||
state->refcnt++;
|
||||
return state;
|
||||
}
|
||||
|
||||
void
|
||||
xkb_state_unref(struct xkb_state *state)
|
||||
{
|
||||
|
|
|
@ -312,10 +312,11 @@ xkb_map_new_from_fd(struct xkb_context *context,
|
|||
return compile_keymap(context, file);
|
||||
}
|
||||
|
||||
void
|
||||
struct xkb_keymap *
|
||||
xkb_map_ref(struct xkb_keymap *xkb)
|
||||
{
|
||||
xkb->refcnt++;
|
||||
return xkb;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue