[PATCH xf86-input-mouse] Use signal-safe logging if available

Chase Douglas chase.douglas at ubuntu.com
Sat Oct 6 08:52:59 PDT 2012


On Wed, Oct 3, 2012 at 7:00 PM, Peter Hutterer <peter.hutterer at who-t.net> wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Urgh, that's what I get for not upstreaming this patch. I wrote this a while
> ago but somehow it never made it to the repo.
>
>  src/bsd_mouse.c  | 10 ++++++----
>  src/hurd_mouse.c |  2 +-
>  src/mouse.c      | 36 ++++++++++++++++++------------------
>  src/mouse.h      |  3 +++
>  src/sun_mouse.c  | 39 +++++++++++++++++++++------------------
>  5 files changed, 49 insertions(+), 41 deletions(-)
>
> diff --git a/src/bsd_mouse.c b/src/bsd_mouse.c
> index 441066f..ca4c9d0 100644
> --- a/src/bsd_mouse.c
> +++ b/src/bsd_mouse.c
> @@ -435,8 +435,9 @@ wsconsReadInput(InputInfoPtr pInfo)
>              break;
>  #endif
>          default:
> -            xf86Msg(X_WARNING, "%s: bad wsmouse event type=%d\n", pInfo->name,
> -                    event->type);
> +            LogMessageVerbSigSafe(X_WARNING, -1,
> +                                  "%s: bad wsmouse event type=%d\n", pInfo->name,
> +                                  event->type);
>              ++event;
>              continue;
>          }
> @@ -584,8 +585,9 @@ usbReadInput(InputInfoPtr pInfo)
>      if (n == 0)
>          return;
>      if (n != pUsbMse->packetSize) {
> -        xf86Msg(X_WARNING, "%s: incomplete packet, size %d\n", pInfo->name,
> -                n);
> +        LogMessageVerbSigSafe(X_WARNING, -1,
> +                              "%s: incomplete packet, size %d\n",
> +                              pInfo->name, n);
>      }
>      /* discard packets with an id that don't match the mouse */
>      /* XXX this is probably not the right thing */
> diff --git a/src/hurd_mouse.c b/src/hurd_mouse.c
> index 16ae945..2b0d786 100644
> --- a/src/hurd_mouse.c
> +++ b/src/hurd_mouse.c
> @@ -122,7 +122,7 @@ OsMouseReadInput(InputInfoPtr pInfo)
>              dy = - event->value.mmotion.mm_deltaY;
>              break;
>          default:
> -            ErrorF("Bad mouse event (%d)\n",event->type);
> +            LogMessageVerbSigSafe(X_ERROR, -1, "Bad mouse event (%d)\n",event->type);
>              continue;
>          }
>          pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0);
> diff --git a/src/mouse.c b/src/mouse.c
> index b65ea0e..0487067 100644
> --- a/src/mouse.c
> +++ b/src/mouse.c
> @@ -1167,7 +1167,7 @@ MouseReadInput(InputInfoPtr pInfo)
>          u = (unsigned char)c;
>
>  #if defined (EXTMOUSEDEBUG) || defined (MOUSEDATADEBUG)
> -        ErrorF("mouse byte: %2.2x\n",u);
> +        LogMessageVerbSigSafe(X_INFO, -1, "mouse byte: %x\n",u);
>  #endif
>
>          /* if we do autoprobing collect the data */
> @@ -1225,7 +1225,7 @@ MouseReadInput(InputInfoPtr pInfo)
>                   * preceeding the byte.
>                   */
>  #ifdef EXTMOUSEDEBUG
> -                ErrorF("mouse 4th byte %02x\n",u);
> +                LogMessageVerbSigSafe(X_INFO, -1, "mouse 4th byte %x\n",u);
>  #endif
>                  dx = dy = dz = dw = 0;
>                  buttons = 0;
> @@ -1275,10 +1275,10 @@ MouseReadInput(InputInfoPtr pInfo)
>  #ifdef EXTMOUSEDEBUG2
>          {
>              int i;
> -            ErrorF("received %d bytes",pBufP);
> +            LogMessageVerbSigSafe(X_INFO, -1, "received %d bytes",pBufP);
>              for ( i=0; i < pBufP; i++)
> -                ErrorF(" %02x",pBuf[i]);
> -            ErrorF("\n");
> +                LogMessageVerbSigSafe(X_INFO, -1, " %x",pBuf[i]);
> +            LogMessageVerbSigSafe(X_INFO, -1, "\n");
>          }
>  #endif
>
> @@ -1353,11 +1353,11 @@ MouseReadInput(InputInfoPtr pInfo)
>          if ((pBuf[0] & pMse->protoPara[0]) != pMse->protoPara[1] || baddata) {
>              if (pMse->inSync) {
>  #ifdef EXTMOUSEDEBUG
> -                ErrorF("mouse driver lost sync\n");
> +                LogMessageVerbSigSafe(X_INFO, -1, "mouse driver lost sync\n");
>  #endif
>              }
>  #ifdef EXTMOUSEDEBUG
> -            ErrorF("skipping byte %02x\n",*pBuf);
> +            LogMessageVerbSigSafe(X_INFO, -1, "skipping byte %x\n",*pBuf);
>  #endif
>              /* Tell auto probe that we are out of sync */
>              if (pMse->autoProbeMouse && pMse->autoProbe)
> @@ -1374,7 +1374,7 @@ MouseReadInput(InputInfoPtr pInfo)
>
>          if (!pMse->inSync) {
>  #ifdef EXTMOUSEDEBUG
> -            ErrorF("mouse driver back in sync\n");
> +            LogMessageVerbSigSafe(X_INFO, -1, "mouse driver back in sync\n");
>  #endif
>              pMse->inSync = 1;
>          }
> @@ -1616,20 +1616,20 @@ MouseReadInput(InputInfoPtr pInfo)
>
>          default: /* There's a table error */
>  #ifdef EXTMOUSEDEBUG
> -            ErrorF("mouse table error\n");
> +            LogMessageVerbSigSafe(X_INFO, -1, "mouse table error\n");
>  #endif
>              continue;
>          }
>  #ifdef EXTMOUSEDEBUG
> -        ErrorF("packet");
> +        LogMessageVerbSigSafe(X_INFO, -1, "packet");
>          for ( j=0; j < pBufP; j++)
> -            ErrorF(" %02x",pBuf[j]);
> -        ErrorF("\n");
> +            LogMessageVerbSigSafe(X_INFO, -1, " %x",pBuf[j]);
> +        LogMessageVerbSigSafe(X_INFO, -1, "\n");
>  #endif
>
>  post_event:
>  #ifdef EXTMOUSEDEBUG
> -        ErrorF("dx=%i dy=%i dz=%i dw=%i buttons=%x\n",dx,dy,dz,dw,buttons);
> +        LogMessageVerbSigSafe(X_INFO, -1, "dx=%i dy=%i dz=%i dw=%i buttons=%x\n",dx,dy,dz,dw,buttons);
>  #endif
>          /* When auto-probing check if data makes sense */
>          if (pMse->checkMovements && pMse->autoProbe)
> @@ -2005,7 +2005,7 @@ buttonTimer(InputInfoPtr pInfo)
>          xf86PostButtonEvent(pInfo->dev, 0, abs(id), (id >= 0), 0, 0);
>          pMse->emulateState = stateTab[pMse->emulateState][4][2];
>      } else {
> -        ErrorF("Got unexpected buttonTimer in state %d\n", pMse->emulateState);
> +        LogMessageVerbSigSafe(X_WARNING, -1, "Got unexpected buttonTimer in state %d\n", pMse->emulateState);
>      }
>
>      xf86UnblockSIGIO (sigstate);
> @@ -2046,7 +2046,7 @@ Emulate3ButtonsSoft(InputInfoPtr pInfo)
>      if (!pMse->emulate3ButtonsSoft)
>          return TRUE;
>
> -    xf86Msg(X_INFO,"3rd Button detected: disabling emulate3Button\n");
> +    LogMessageVerbSigSafe(X_INFO, 4, "mouse: 3rd Button detected: disabling emulate3Button\n");
>
>      Emulate3ButtonsSetEnabled(pInfo, FALSE);
>
> @@ -3003,7 +3003,7 @@ mouseReset(InputInfoPtr pInfo, unsigned char val)
>      mousepriv->lastEvent = GetTimeInMillis();
>
>  #ifdef EXTMOUSEDEBUG
> -    ErrorF("byte: 0x%x time: %li\n",val,mousepriv->lastEvent);
> +    LogMessageVerbSigSafe(X_INFO, -1, "byte: 0x%x time: %li\n",val,mousepriv->lastEvent);
>  #endif
>      /*
>       * We believe that the following is true:
> @@ -3031,7 +3031,7 @@ mouseReset(InputInfoPtr pInfo, unsigned char val)
>          mousepriv->inReset = FALSE;
>
>  #ifdef EXTMOUSEDEBUG
> -    ErrorF("Mouse Current: %i 0x%x\n",mousepriv->current, val);
> +    LogMessageVerbSigSafe(X_INFO, -1, "Mouse Current: %i 0x%x\n",mousepriv->current, val);
>  #endif
>
>      /* here we put the mouse specific reset detection */
> @@ -3054,7 +3054,7 @@ mouseReset(InputInfoPtr pInfo, unsigned char val)
>              mousepriv->expires = GetTimeInMillis() + 1000;
>
>  #ifdef EXTMOUSEDEBUG
> -            ErrorF("Found PS/2 Reset string\n");
> +            LogMessageVerbSigSafe(X_INFO, -1, "Found PS/2 Reset string\n");
>  #endif
>              RegisterBlockAndWakeupHandlers (ps2BlockHandler,
>                                              ps2WakeupHandler, (pointer) pInfo);
> diff --git a/src/mouse.h b/src/mouse.h
> index 0b3f709..e1165f2 100644
> --- a/src/mouse.h
> +++ b/src/mouse.h
> @@ -38,6 +38,9 @@
>  #define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
>  #endif
>
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 18
> +#define LogMessageVerbSigSafe LogMessageVerb
> +#endif
>
>  /* Mouse interface classes */
>  #define MSE_NONE        0x00
> diff --git a/src/sun_mouse.c b/src/sun_mouse.c
> index a291c19..16434e6 100644
> --- a/src/sun_mouse.c
> +++ b/src/sun_mouse.c
> @@ -303,21 +303,23 @@ vuidReadInput(InputInfoPtr pInfo)
>                  case EINTR:  /* Interrupted, try again */
>                      continue;
>                  case ENODEV: /* May happen when USB mouse is unplugged */
> -                    /* We use X_NONE here because it doesn't alloc since we
> -                       may be called from SIGIO handler */
> -                    xf86MsgVerb(X_NONE, 0,
> -                                "%s: Device no longer present - removing.\n",
> -                                pInfo->name);
> +                    /* We use X_NONE here because it didn't alloc since we
> +                       may be called from SIGIO handler. No longer true for
> +                       sigsafe logging, but matters for older servers  */
> +                    LogMessageVerbSigSafe(X_NONE, 0,
> +                                          "%s: Device no longer present - removing.\n",
> +                                          pInfo->name);
>                      xf86RemoveEnabledDevice(pInfo);
>                      pVuidMse->remove_timer =
>                          TimerSet(pVuidMse->remove_timer, 0, 1,
>                                   vuidRemoveMouse, pInfo);
>                      return;
>                  default:     /* All other errors */
> -                    /* We use X_NONE here because it doesn't alloc since we
> -                       may be called from SIGIO handler */
> -                    xf86MsgVerb(X_NONE, 0, "%s: Read error: %s\n", pInfo->name,
> -                                strerror(errno));
> +                    /* We use X_NONE here because it didn't alloc since we
> +                       may be called from SIGIO handler. No longer true for
> +                       sigsafe logging, but matters for older servers  */
> +                    LogMessageVerbSigSafe(X_NONE, 0, "%s: Read error: %s\n",
> +                                          pInfo->name, strerror(errno));
>                      return;
>              }
>          } else if (n != sizeof(Firm_event)) {
> @@ -326,8 +328,8 @@ vuidReadInput(InputInfoPtr pInfo)
>          }
>
>  #ifdef DEBUG
> -        ErrorF("vuidReadInput: event type: %3d value: %5d\n",
> -               pVuidMse->event.id, pVuidMse->event.value);
> +        LogMessageVerbSigSafe("vuidReadInput: event type: %d value: %d\n",
> +                              pVuidMse->event.id, pVuidMse->event.value);
>  #endif
>
>          if (pVuidMse->event.id >= BUT_FIRST && pVuidMse->event.id <= BUT_LAST) {
> @@ -417,15 +419,16 @@ static void vuidMouseSendScreenSize(ScreenPtr pScreen, VuidMsePtr pVuidMse)
>          } while ( (result != 0) && (errno == EINTR) );
>
>          if (result != 0) {
> -            xf86Msg(X_WARNING,
> -                    "%s: couldn't set absolute mouse scaling resolution: %s\n",
> -                    pInfo->name, strerror(errno));
> +            LogMessageVerbSigSafe(X_WARNING, -1,
> +                                  "%s: couldn't set absolute mouse scaling resolution: %s\n",
> +                                  pInfo->name, strerror(errno));
>  #ifdef DEBUG
>          } else {
> -            xf86Msg(X_INFO,
> -                    "%s: absolute mouse scaling resolution set to %d x %d\n",
> -                    pInfo->name,
> -                    pVuidMse->absres.width, pVuidMse->absres.height);
> +            LogMessageVerbSigSafe(X_INFO,
> +                                  "%s: absolute mouse scaling resolution set to %d x %d\n",
> +                                  pInfo->name,
> +                                  pVuidMse->absres.width,
> +                                  pVuidMse->absres.height);
>  #endif
>          }
>      }

It all looks right to me.

Reviewed-by: Chase Douglas <chase.douglas at ubuntu.com>


More information about the xorg-devel mailing list