<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:Consolas;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:Consolas;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Arial","sans-serif";
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Arial","sans-serif";
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoPlainText style='margin-bottom:12.0pt'><span style='font-family:"Courier New"'>The problem was that if we ever switched to another tty while running Weston, then we would essentially not handle any remaining events and Weston would enter an infinite loop where it's trying to process an event but it can't because the processing function evdev_device_data exits before it can read anything from the queue. With this fix, we read whatever is in the queue, but not process it any further. <o:p></o:p></span></p><p class=MsoPlainText style='margin-bottom:12.0pt'><span style='font-family:"Courier New"'>---<br> src/evdev.c | 5 ++---<br> 1 file changed, 2 insertions(+), 3 deletions(-)<br><br>diff --git a/src/evdev.c b/src/evdev.c<br>index 9289b1c..70d3c52 100644<br>--- a/src/evdev.c<br>+++ b/src/evdev.c<br>@@ -372,8 +372,6 @@ evdev_device_data(int fd, uint32_t mask, void *data)<br>      int len;<br> <br>      ec = device->seat->compositor;<br>-     if (!ec->focus)<br>-           return 1;<br> <br>      /* If the compositor is repainting, this function is called only once<br>       * per frame and we have to process all the events available on the<br>@@ -391,7 +389,8 @@ evdev_device_data(int fd, uint32_t mask, void *data)<br>                  return 1;<br>            }<br> <br>-           evdev_process_events(device, ev, len / sizeof ev[0]);<br>+           if (ec->focus)<br>+                 evdev_process_events(device, ev, len / sizeof ev[0]);<br> <br>      } while (len > 0);<br> <br>-- <br>1.7.11.4<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'><o:p> </o:p></span></p></div></body></html>