Use more g_autofoo throughout mutter
This commit is contained in:
parent
4a968c3b4e
commit
4d80a4cc31
@ -886,14 +886,14 @@ apply_configuration (MetaMonitorConfig *self,
|
|||||||
MetaConfiguration *config,
|
MetaConfiguration *config,
|
||||||
MetaMonitorManager *manager)
|
MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
GPtrArray *crtcs, *outputs;
|
g_autoptr(GPtrArray) crtcs = NULL;
|
||||||
gboolean ret = FALSE;
|
g_autoptr(GPtrArray) outputs = NULL;
|
||||||
|
|
||||||
crtcs = g_ptr_array_new_full (config->n_outputs, (GDestroyNotify)meta_crtc_info_free);
|
crtcs = g_ptr_array_new_full (config->n_outputs, (GDestroyNotify)meta_crtc_info_free);
|
||||||
outputs = g_ptr_array_new_full (config->n_outputs, (GDestroyNotify)meta_output_info_free);
|
outputs = g_ptr_array_new_full (config->n_outputs, (GDestroyNotify)meta_output_info_free);
|
||||||
|
|
||||||
if (!meta_monitor_config_assign_crtcs (config, manager, crtcs, outputs))
|
if (!meta_monitor_config_assign_crtcs (config, manager, crtcs, outputs))
|
||||||
goto out;
|
return FALSE;
|
||||||
|
|
||||||
meta_monitor_manager_apply_configuration (manager,
|
meta_monitor_manager_apply_configuration (manager,
|
||||||
(MetaCRTCInfo**)crtcs->pdata, crtcs->len,
|
(MetaCRTCInfo**)crtcs->pdata, crtcs->len,
|
||||||
@ -905,12 +905,7 @@ apply_configuration (MetaMonitorConfig *self,
|
|||||||
* inside turn_off_laptop_display / apply_configuration_with_lid */
|
* inside turn_off_laptop_display / apply_configuration_with_lid */
|
||||||
self->current_is_for_laptop_lid = FALSE;
|
self->current_is_for_laptop_lid = FALSE;
|
||||||
|
|
||||||
ret = TRUE;
|
return TRUE;
|
||||||
|
|
||||||
out:
|
|
||||||
g_ptr_array_unref (crtcs);
|
|
||||||
g_ptr_array_unref (outputs);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -1840,7 +1835,6 @@ real_assign_crtcs (CrtcAssignment *assignment,
|
|||||||
MetaOutputKey *output_key;
|
MetaOutputKey *output_key;
|
||||||
MetaOutputConfig *output_config;
|
MetaOutputConfig *output_config;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
gboolean success;
|
|
||||||
|
|
||||||
if (output_num == assignment->config->n_outputs)
|
if (output_num == assignment->config->n_outputs)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1857,8 +1851,6 @@ real_assign_crtcs (CrtcAssignment *assignment,
|
|||||||
&crtcs, &n_crtcs,
|
&crtcs, &n_crtcs,
|
||||||
&outputs, &n_outputs);
|
&outputs, &n_outputs);
|
||||||
|
|
||||||
success = FALSE;
|
|
||||||
|
|
||||||
for (i = 0; i < n_crtcs; i++)
|
for (i = 0; i < n_crtcs; i++)
|
||||||
{
|
{
|
||||||
MetaCRTC *crtc = &crtcs[i];
|
MetaCRTC *crtc = &crtcs[i];
|
||||||
@ -1905,10 +1897,7 @@ real_assign_crtcs (CrtcAssignment *assignment,
|
|||||||
output))
|
output))
|
||||||
{
|
{
|
||||||
if (real_assign_crtcs (assignment, output_num + 1))
|
if (real_assign_crtcs (assignment, output_num + 1))
|
||||||
{
|
return TRUE;
|
||||||
success = TRUE;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
crtc_assignment_unassign (assignment, crtc, output);
|
crtc_assignment_unassign (assignment, crtc, output);
|
||||||
}
|
}
|
||||||
@ -1917,8 +1906,7 @@ real_assign_crtcs (CrtcAssignment *assignment,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
return FALSE;
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -368,16 +368,14 @@ static char *
|
|||||||
make_display_name (MetaMonitorManager *manager,
|
make_display_name (MetaMonitorManager *manager,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
char *inches = NULL;
|
g_autofree char *inches = NULL;
|
||||||
char *vendor_name = NULL;
|
g_autofree char *vendor_name = NULL;
|
||||||
char *ret;
|
|
||||||
|
|
||||||
switch (output->connector_type)
|
switch (output->connector_type)
|
||||||
{
|
{
|
||||||
case META_CONNECTOR_TYPE_LVDS:
|
case META_CONNECTOR_TYPE_LVDS:
|
||||||
case META_CONNECTOR_TYPE_eDP:
|
case META_CONNECTOR_TYPE_eDP:
|
||||||
ret = g_strdup (_("Built-in display"));
|
return g_strdup (_("Built-in display"));
|
||||||
goto out;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -413,18 +411,12 @@ make_display_name (MetaMonitorManager *manager,
|
|||||||
/* TRANSLATORS: this is a monitor vendor name, followed by a
|
/* TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
* size in inches, like 'Dell 15"'
|
* size in inches, like 'Dell 15"'
|
||||||
*/
|
*/
|
||||||
ret = g_strdup_printf (_("%s %s"), vendor_name, inches);
|
return g_strdup_printf (_("%s %s"), vendor_name, inches);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret = g_strdup (vendor_name);
|
return g_strdup (vendor_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
|
||||||
g_free (inches);
|
|
||||||
g_free (vendor_name);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
|
@ -130,9 +130,8 @@ take_device (Login1Session *session_proxy,
|
|||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
g_autoptr (GVariant) fd_variant = NULL;
|
||||||
GVariant *fd_variant = NULL;
|
g_autoptr (GUnixFDList) fd_list = NULL;
|
||||||
GUnixFDList *fd_list = NULL;
|
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
|
||||||
if (!login1_session_call_take_device_sync (session_proxy,
|
if (!login1_session_call_take_device_sync (session_proxy,
|
||||||
@ -144,21 +143,14 @@ take_device (Login1Session *session_proxy,
|
|||||||
&fd_list,
|
&fd_list,
|
||||||
cancellable,
|
cancellable,
|
||||||
error))
|
error))
|
||||||
goto out;
|
return FALSE;
|
||||||
|
|
||||||
fd = g_unix_fd_list_get (fd_list, g_variant_get_handle (fd_variant), error);
|
fd = g_unix_fd_list_get (fd_list, g_variant_get_handle (fd_variant), error);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
goto out;
|
return FALSE;
|
||||||
|
|
||||||
*out_fd = fd;
|
*out_fd = fd;
|
||||||
ret = TRUE;
|
return TRUE;
|
||||||
|
|
||||||
out:
|
|
||||||
if (fd_variant)
|
|
||||||
g_variant_unref (fd_variant);
|
|
||||||
if (fd_list)
|
|
||||||
g_object_unref (fd_list);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -166,22 +158,16 @@ get_device_info_from_path (const char *path,
|
|||||||
int *out_major,
|
int *out_major,
|
||||||
int *out_minor)
|
int *out_minor)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
|
||||||
int r;
|
int r;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
r = stat (path, &st);
|
r = stat (path, &st);
|
||||||
if (r < 0)
|
if (r < 0 || !S_ISCHR (st.st_mode))
|
||||||
goto out;
|
return FALSE;
|
||||||
if (!S_ISCHR (st.st_mode))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
*out_major = major (st.st_rdev);
|
*out_major = major (st.st_rdev);
|
||||||
*out_minor = minor (st.st_rdev);
|
*out_minor = minor (st.st_rdev);
|
||||||
ret = TRUE;
|
return TRUE;
|
||||||
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -189,22 +175,16 @@ get_device_info_from_fd (int fd,
|
|||||||
int *out_major,
|
int *out_major,
|
||||||
int *out_minor)
|
int *out_minor)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
|
||||||
int r;
|
int r;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
r = fstat (fd, &st);
|
r = fstat (fd, &st);
|
||||||
if (r < 0)
|
if (r < 0 || !S_ISCHR (st.st_mode))
|
||||||
goto out;
|
return FALSE;
|
||||||
if (!S_ISCHR (st.st_mode))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
*out_major = major (st.st_rdev);
|
*out_major = major (st.st_rdev);
|
||||||
*out_minor = minor (st.st_rdev);
|
*out_minor = minor (st.st_rdev);
|
||||||
ret = TRUE;
|
return TRUE;
|
||||||
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -194,11 +194,10 @@ static gboolean
|
|||||||
output_get_boolean_property (MetaMonitorManagerXrandr *manager_xrandr,
|
output_get_boolean_property (MetaMonitorManagerXrandr *manager_xrandr,
|
||||||
MetaOutput *output, const char *propname)
|
MetaOutput *output, const char *propname)
|
||||||
{
|
{
|
||||||
gboolean value = FALSE;
|
|
||||||
Atom atom, actual_type;
|
Atom atom, actual_type;
|
||||||
int actual_format;
|
int actual_format;
|
||||||
unsigned long nitems, bytes_after;
|
unsigned long nitems, bytes_after;
|
||||||
unsigned char *buffer;
|
g_autofree unsigned char *buffer = NULL;
|
||||||
|
|
||||||
atom = XInternAtom (manager_xrandr->xdisplay, propname, False);
|
atom = XInternAtom (manager_xrandr->xdisplay, propname, False);
|
||||||
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
||||||
@ -209,13 +208,9 @@ output_get_boolean_property (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
&nitems, &bytes_after, &buffer);
|
&nitems, &bytes_after, &buffer);
|
||||||
|
|
||||||
if (actual_type != XA_CARDINAL || actual_format != 32 || nitems < 1)
|
if (actual_type != XA_CARDINAL || actual_format != 32 || nitems < 1)
|
||||||
goto out;
|
return FALSE;
|
||||||
|
|
||||||
value = ((int*)buffer)[0];
|
return ((int*)buffer)[0];
|
||||||
|
|
||||||
out:
|
|
||||||
XFree (buffer);
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -229,12 +224,11 @@ static gboolean
|
|||||||
output_get_underscanning_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
output_get_underscanning_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
gboolean value = FALSE;
|
|
||||||
Atom atom, actual_type;
|
Atom atom, actual_type;
|
||||||
int actual_format;
|
int actual_format;
|
||||||
unsigned long nitems, bytes_after;
|
unsigned long nitems, bytes_after;
|
||||||
unsigned char *buffer;
|
g_autofree unsigned char *buffer = NULL;
|
||||||
char *str;
|
g_autofree char *str = NULL;
|
||||||
|
|
||||||
atom = XInternAtom (manager_xrandr->xdisplay, "underscan", False);
|
atom = XInternAtom (manager_xrandr->xdisplay, "underscan", False);
|
||||||
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
||||||
@ -244,17 +238,11 @@ output_get_underscanning_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
&actual_type, &actual_format,
|
&actual_type, &actual_format,
|
||||||
&nitems, &bytes_after, &buffer);
|
&nitems, &bytes_after, &buffer);
|
||||||
|
|
||||||
if (actual_type != XA_ATOM || actual_format != 32 ||
|
if (actual_type != XA_ATOM || actual_format != 32 || nitems < 1)
|
||||||
nitems < 1)
|
return FALSE;
|
||||||
goto out;
|
|
||||||
|
|
||||||
str = XGetAtomName (manager_xrandr->xdisplay, *(Atom *)buffer);
|
str = XGetAtomName (manager_xrandr->xdisplay, *(Atom *)buffer);
|
||||||
value = !strcmp(str, "on");
|
return (strcmp (str, "on") == 0);
|
||||||
XFree (str);
|
|
||||||
|
|
||||||
out:
|
|
||||||
XFree (buffer);
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -273,7 +261,7 @@ output_get_backlight_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
Atom atom, actual_type;
|
Atom atom, actual_type;
|
||||||
int actual_format;
|
int actual_format;
|
||||||
unsigned long nitems, bytes_after;
|
unsigned long nitems, bytes_after;
|
||||||
unsigned char *buffer;
|
g_autofree unsigned char *buffer = NULL;
|
||||||
|
|
||||||
atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False);
|
atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False);
|
||||||
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
||||||
@ -284,12 +272,9 @@ output_get_backlight_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
&nitems, &bytes_after, &buffer);
|
&nitems, &bytes_after, &buffer);
|
||||||
|
|
||||||
if (actual_type != XA_INTEGER || actual_format != 32 || nitems < 1)
|
if (actual_type != XA_INTEGER || actual_format != 32 || nitems < 1)
|
||||||
goto out;
|
return FALSE;
|
||||||
|
|
||||||
value = ((int*)buffer)[0];
|
value = ((int*)buffer)[0];
|
||||||
|
|
||||||
out:
|
|
||||||
XFree (buffer);
|
|
||||||
if (value > 0)
|
if (value > 0)
|
||||||
return normalize_backlight (output, value);
|
return normalize_backlight (output, value);
|
||||||
else
|
else
|
||||||
@ -302,7 +287,7 @@ output_get_backlight_limits_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
{
|
{
|
||||||
Atom atom;
|
Atom atom;
|
||||||
xcb_connection_t *xcb_conn;
|
xcb_connection_t *xcb_conn;
|
||||||
xcb_randr_query_output_property_reply_t *reply;
|
g_autofree xcb_randr_query_output_property_reply_t *reply;
|
||||||
|
|
||||||
atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False);
|
atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False);
|
||||||
|
|
||||||
@ -320,15 +305,12 @@ output_get_backlight_limits_xrandr (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
if (!reply->range || reply->length != 2)
|
if (!reply->range || reply->length != 2)
|
||||||
{
|
{
|
||||||
meta_verbose ("backlight %s was not range\n", output->name);
|
meta_verbose ("backlight %s was not range\n", output->name);
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t *values = xcb_randr_query_output_property_valid_values (reply);
|
int32_t *values = xcb_randr_query_output_property_valid_values (reply);
|
||||||
output->backlight_min = values[0];
|
output->backlight_min = values[0];
|
||||||
output->backlight_max = values[1];
|
output->backlight_max = values[1];
|
||||||
|
|
||||||
out:
|
|
||||||
free (reply);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -479,11 +461,10 @@ static MetaConnectorType
|
|||||||
output_get_connector_type_from_prop (MetaMonitorManagerXrandr *manager_xrandr,
|
output_get_connector_type_from_prop (MetaMonitorManagerXrandr *manager_xrandr,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
MetaConnectorType ret = META_CONNECTOR_TYPE_Unknown;
|
|
||||||
Atom atom, actual_type, connector_type_atom;
|
Atom atom, actual_type, connector_type_atom;
|
||||||
int actual_format;
|
int actual_format;
|
||||||
unsigned long nitems, bytes_after;
|
unsigned long nitems, bytes_after;
|
||||||
unsigned char *buffer;
|
g_autofree unsigned char *buffer = NULL;
|
||||||
|
|
||||||
atom = XInternAtom (manager_xrandr->xdisplay, "ConnectorType", False);
|
atom = XInternAtom (manager_xrandr->xdisplay, "ConnectorType", False);
|
||||||
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
XRRGetOutputProperty (manager_xrandr->xdisplay,
|
||||||
@ -494,14 +475,10 @@ output_get_connector_type_from_prop (MetaMonitorManagerXrandr *manager_xrandr,
|
|||||||
&nitems, &bytes_after, &buffer);
|
&nitems, &bytes_after, &buffer);
|
||||||
|
|
||||||
if (actual_type != XA_ATOM || actual_format != 32 || nitems < 1)
|
if (actual_type != XA_ATOM || actual_format != 32 || nitems < 1)
|
||||||
goto out;
|
return META_CONNECTOR_TYPE_Unknown;
|
||||||
|
|
||||||
connector_type_atom = ((Atom *) buffer)[0];
|
connector_type_atom = ((Atom *) buffer)[0];
|
||||||
ret = connector_type_from_atom (manager_xrandr, connector_type_atom);
|
return connector_type_from_atom (manager_xrandr, connector_type_atom);
|
||||||
|
|
||||||
out:
|
|
||||||
meta_XFree (buffer);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaConnectorType
|
static MetaConnectorType
|
||||||
@ -1068,7 +1045,7 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
if (crtc_info->mode != NULL)
|
if (crtc_info->mode != NULL)
|
||||||
{
|
{
|
||||||
MetaMonitorMode *mode;
|
MetaMonitorMode *mode;
|
||||||
XID *outputs;
|
g_autofree XID *outputs = NULL;
|
||||||
unsigned int j, n_outputs;
|
unsigned int j, n_outputs;
|
||||||
int width, height;
|
int width, height;
|
||||||
Status ok;
|
Status ok;
|
||||||
@ -1105,7 +1082,7 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
(unsigned)(crtc->crtc_id), (unsigned)(mode->mode_id),
|
(unsigned)(crtc->crtc_id), (unsigned)(mode->mode_id),
|
||||||
mode->width, mode->height, (float)mode->refresh_rate,
|
mode->width, mode->height, (float)mode->refresh_rate,
|
||||||
crtc_info->x, crtc_info->y, crtc_info->transform);
|
crtc_info->x, crtc_info->y, crtc_info->transform);
|
||||||
goto next;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta_monitor_transform_is_rotated (crtc_info->transform))
|
if (meta_monitor_transform_is_rotated (crtc_info->transform))
|
||||||
@ -1125,9 +1102,6 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
crtc->rect.height = height;
|
crtc->rect.height = height;
|
||||||
crtc->current_mode = mode;
|
crtc->current_mode = mode;
|
||||||
crtc->transform = crtc_info->transform;
|
crtc->transform = crtc_info->transform;
|
||||||
|
|
||||||
next:
|
|
||||||
g_free (outputs);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +176,6 @@ static gboolean
|
|||||||
accelerator_parse (const gchar *accelerator,
|
accelerator_parse (const gchar *accelerator,
|
||||||
MetaKeyCombo *combo)
|
MetaKeyCombo *combo)
|
||||||
{
|
{
|
||||||
gboolean error = FALSE;
|
|
||||||
guint keyval, keycode;
|
guint keyval, keycode;
|
||||||
MetaVirtualModifier mods;
|
MetaVirtualModifier mods;
|
||||||
gint len;
|
gint len;
|
||||||
@ -186,10 +185,7 @@ accelerator_parse (const gchar *accelerator,
|
|||||||
combo->modifiers = 0;
|
combo->modifiers = 0;
|
||||||
|
|
||||||
if (accelerator == NULL)
|
if (accelerator == NULL)
|
||||||
{
|
return FALSE;
|
||||||
error = TRUE;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
keyval = 0;
|
keyval = 0;
|
||||||
keycode = 0;
|
keycode = 0;
|
||||||
@ -310,10 +306,7 @@ accelerator_parse (const gchar *accelerator,
|
|||||||
g_free (with_xf86);
|
g_free (with_xf86);
|
||||||
|
|
||||||
if (keyval == XKB_KEY_NoSymbol)
|
if (keyval == XKB_KEY_NoSymbol)
|
||||||
{
|
return FALSE;
|
||||||
error = TRUE;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,14 +315,10 @@ accelerator_parse (const gchar *accelerator,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (error)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
combo->keysym = keyval;
|
combo->keysym = keyval;
|
||||||
combo->keycode = keycode;
|
combo->keycode = keycode;
|
||||||
combo->modifiers = mods;
|
combo->modifiers = mods;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user