Julien Cristau <[email protected]> writes: > On Mon, Aug 26, 2013 at 13:26:15 -0700, Eric Anholt wrote: > >> --- >> hw/kdrive/ephyr/ephyrhostvideo.c | 107 ------------------------------- >> hw/kdrive/ephyr/ephyrhostvideo.h | 19 ------ >> hw/kdrive/ephyr/ephyrvideo.c | 133 >> ++++++++++++++++++++++++--------------- >> 3 files changed, 82 insertions(+), 177 deletions(-) >> > [...] >> diff --git a/hw/kdrive/ephyr/ephyrvideo.c b/hw/kdrive/ephyr/ephyrvideo.c >> index be59886..62f697c 100644 >> --- a/hw/kdrive/ephyr/ephyrvideo.c >> +++ b/hw/kdrive/ephyr/ephyrvideo.c > [...] >> @@ -650,18 +656,23 @@ ephyrXVPrivGetImageBufSize(int a_port_id, >> unsigned short a_width, >> unsigned short a_height, int *a_size) >> { >> + xcb_connection_t *conn = hostx_get_xcbconn(); >> + xcb_xv_query_image_attributes_cookie_t cookie; >> + xcb_xv_query_image_attributes_reply_t *reply; >> Bool is_ok = FALSE; >> - unsigned short width = a_width, height = a_height; >> >> EPHYR_RETURN_VAL_IF_FAIL(a_size, FALSE); >> >> EPHYR_LOG("enter\n"); >> >> - if (!ephyrHostXVQueryImageAttributes(a_port_id, a_image_id, >> - &width, &height, a_size, NULL, >> NULL)) { >> - EPHYR_LOG_ERROR("failed to get image attributes\n"); >> + cookie = xcb_xv_query_image_attributes(conn, >> + a_port_id, a_image_id, >> + a_width, a_height); >> + reply = xcb_xv_query_image_attributes_reply(conn, cookie, NULL); >> + if (!reply) >> goto out; >> - } >> + >> + *a_size = reply->data_size; >> is_ok = TRUE; >> >> out: > > This seems to leak 'reply'. > > [...] >> @@ -772,8 +781,12 @@ static int >> ephyrGetPortAttribute(KdScreenInfo * a_screen_info, >> Atom a_attr_name, int *a_attr_value, pointer >> a_port_priv) >> { >> + xcb_connection_t *conn = hostx_get_xcbconn(); >> int res = Success, host_atom = 0; >> EphyrPortPriv *port_priv = a_port_priv; >> + xcb_generic_error_t *e; >> + xcb_xv_get_port_attribute_cookie_t cookie; >> + xcb_xv_get_port_attribute_reply_t *reply; >> >> EPHYR_RETURN_VAL_IF_FAIL(port_priv, BadMatch); >> EPHYR_RETURN_VAL_IF_FAIL(ValidAtom(a_attr_name), BadMatch); >> @@ -788,12 +801,15 @@ ephyrGetPortAttribute(KdScreenInfo * a_screen_info, >> goto out; >> } >> >> - if (!ephyrHostXVGetPortAttribute(port_priv->port_number, >> - host_atom, a_attr_value)) { >> - EPHYR_LOG_ERROR("failed to get port attribute\n"); >> + cookie = xcb_xv_get_port_attribute(conn, port_priv->port_number, >> host_atom); >> + reply = xcb_xv_get_port_attribute_reply(conn, cookie, &e); >> + if (e) { >> + EPHYR_LOG_ERROR ("XvGetPortAttribute() failed: %d \n", >> e->error_code); >> + free(e); >> res = BadMatch; >> goto out; >> } >> + *a_attr_value = reply->value; >> >> res = Success; >> out: > > Missing free(reply) here too.
Fixed, thanks!
pgpIYKrK5dpxK.pgp
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
