[Merge] lp:~samuel-thibault/unity/shortcuts into lp:unity

Marco Trevisan (TreviƱo) mail at 3v1n0.net
Thu Dec 14 19:08:25 UTC 2017


Thanks for this, looks sane... Check the comments  please.

Diff comments:

> === modified file 'unity-shared/InputMonitor.cpp'
> --- unity-shared/InputMonitor.cpp	2017-02-28 17:16:14 +0000
> +++ unity-shared/InputMonitor.cpp	2017-12-14 17:21:32 +0000
> @@ -154,6 +155,8 @@
>      {
>        LOG_ERROR(logger) << "Missing XInput, impossible to setup an InputMonitor";
>      }
> +
> +    basemasks = XIGetSelectedEvents (dpy, root, &num_basemasks);

Get off the space before the opening bracket (.
Also, please move this  inside a new else statement of the check if (XIQueryVersion(dpy, &maj, &min) == BadRequest).

>    }
>  
>    ~Impl()
> @@ -223,14 +227,53 @@
>      return events;
>    }
>  
> +  // Prepare a mask based on the Compiz-configured mask
> +  void InitializeMask(int deviceid, XIEventMask* ourmask)
> +  {
> +    int wanted_mask_len = XIMaskLen(XI_LASTEVENT);
> +    int mask_len = -1;
> +    unsigned char* mask;
> +
> +    for (int i = 0; i < num_basemasks; i++)
> +    {
> +      if (basemasks[i].deviceid == deviceid) {

Move bracket in new line

> +	// Compiz is already listening for some events on this device, use this as a base
> +
> +	// Compute final mask length

Get off this obiouvs comment

> +	mask_len = basemasks[i].mask_len;
> +	if (mask_len < wanted_mask_len)
> +	  // The existing mask is smaller than what we might want to set

Same here

> +	  mask_len = wanted_mask_len;
> +
> +	// Make a fresh copy of the existing mask

And again

> +	mask = (unsigned char*) malloc(mask_len);
> +	memcpy(mask, basemasks[i].mask, basemasks[i].mask_len);
> +	memset(mask + basemasks[i].mask_len, 0, mask_len - basemasks[i].mask_len);
> +	break;
> +      }
> +    }
> +
> +    if (mask_len < 0)
> +    {
> +      // No existing mask

Here too

> +      mask_len = wanted_mask_len;
> +      mask = (unsigned char*) calloc(mask_len, 1);
> +    }
> +
> +    ourmask->deviceid = deviceid;
> +    ourmask->mask_len = mask_len;
> +    ourmask->mask = mask;
> +  }
> +
>    void UpdateEventMonitor()
>    {
>      auto* nux_dpy = nux::GetGraphicsDisplay();
>      auto* dpy = nux_dpy ? nux_dpy->GetX11Display() : gdk_x11_get_default_xdisplay();
>      Window root = DefaultRootWindow(dpy);
>  
> -    unsigned char master_dev_bits[XIMaskLen(XI_LASTEVENT)] = { 0 };

Can't you keep this (call it master_dev_mask, if you prefer), and just associate this to master_dev.mask so that you don't have to do the dynamic allocation in InitializeMask?

> -    XIEventMask master_dev = { XIAllMasterDevices, sizeof(master_dev_bits), master_dev_bits };
> +    XIEventMask master_dev;
> +
> +    InitializeMask(XIAllMasterDevices, &master_dev);
>  
>      if (!barrier_callbacks_.empty())
>      {
> @@ -238,8 +281,9 @@
>        XISetMask(master_dev.mask, XI_BarrierLeave);
>      }
>  
> -    unsigned char all_devs_bits[XIMaskLen(XI_LASTEVENT)] = { 0 };

And same for this...

> -    XIEventMask all_devs = { XIAllDevices, sizeof(all_devs_bits), all_devs_bits };
> +    XIEventMask all_devs;
> +
> +    InitializeMask(XIAllDevices, &all_devs);
>  
>      if (!pointer_callbacks_.empty())
>      {
> @@ -374,6 +427,8 @@
>    EventCallbackSet key_callbacks_;
>    EventCallbackSet barrier_callbacks_;
>    EventCallbackSet removal_queue_;
> +  XIEventMask* basemasks;
> +  int num_basemasks;

Please add trailing '_' to the private variables (i.e. basemarks_).

Also they need to initialized to nullptr and 0 in the Impl constructor.

>  };
>  
>  Monitor::Monitor()


-- 
https://code.launchpad.net/~samuel-thibault/unity/shortcuts/+merge/335231
Your team Unity Team is requested to review the proposed merge of lp:~samuel-thibault/unity/shortcuts into lp:unity.



More information about the Ubuntu-reviews mailing list