<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>317926</bug_id>
          
          <creation_ts>2013-04-06 13:53:09 +0000</creation_ts>
          <short_desc>kmix start delayed on 20 seconds</short_desc>
          <delta_ts>2021-03-14 04:33:34 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>kmix</product>
          <component>On Hold / External issue</component>
          <version>4.3</version>
          <rep_platform>Kubuntu</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          <see_also>https://bugs.kde.org/show_bug.cgi?id=318036</see_also>
    
    <see_also>https://bugs.kde.org/show_bug.cgi?id=315383</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>VHI</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="nucleo">nucleo</reporter>
          <assigned_to name="Christian Esken">esken</assigned_to>
          <cc>abderrahman.najjar</cc>
    
    <cc>alexhs.tsi</cc>
    
    <cc>arthur</cc>
    
    <cc>aspotashev</cc>
    
    <cc>cfeck</cc>
    
    <cc>deaunapaul</cc>
    
    <cc>germano.massullo</cc>
    
    <cc>ioana.bartha</cc>
    
    <cc>jjm</cc>
    
    <cc>joe.yasi</cc>
    
    <cc>lamarque</cc>
    
    <cc>mangus</cc>
    
    <cc>modellbaukeller</cc>
    
    <cc>pmavroeidis77</cc>
    
    <cc>rdieter</cc>
    
    <cc>sgh</cc>
    
    <cc>stasnel</cc>
    
    <cc>subfusc</cc>
    
    <cc>tobias.hain</cc>
    
    <cc>tuckyaice</cc>
    
    <cc>web</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin>4.11</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>62</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357985</commentid>
    <comment_count>0</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-04-06 13:53:09 +0000</bug_when>
    <thetext>After update from KDE 4.10.1 to 4.10.2 kmix appeared in systemtray with 20 seconds delay after KDE start but only if appmenu-qt configured to &quot;Title bar button&quot;.

Reproducible: Always

Steps to Reproduce:
1. Set menubar style to &quot;Title bar button&quot;.
2. Restart KDE.
Actual Results:  
kmix appeared in systemtary with 20 second delay after KDE started.

Expected Results:  
No delay.

No delay if set menubar style to &quot;In application&quot;.
In KDE 4.10.1 with &quot;Title bar button&quot; kmix started without delay.
appmenu-qt-0.2.6 installed.
Delay happens with and without installed pulseaudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358144</commentid>
    <comment_count>1</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-04-07 00:53:46 +0000</bug_when>
    <thetext>I downgraded kmix to 4.10.1 and left all of KDE 4.10.2, but kmix start still delayed.
So maybe this problem somewhere in other KDE 4.10.2 components outside kmix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358145</commentid>
    <comment_count>2</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-04-07 00:56:56 +0000</bug_when>
    <thetext>Impossible to start any application from kickoff or from desktop until kmix not stared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361698</commentid>
    <comment_count>3</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-04-17 18:26:38 +0000</bug_when>
    <thetext>This is message from .xsession-errors with menubar style &quot;Title bar button&quot;

ESC[31mbool DBusMenuExporterDBus::AboutToShow(int)ESC[0m: Condition failed: menu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367378</commentid>
    <comment_count>4</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-05-08 16:36:49 +0000</bug_when>
    <thetext>Bug still in 4.10.3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367502</commentid>
    <comment_count>5</comment_count>
    <who name="">modellbaukeller</who>
    <bug_when>2013-05-09 08:10:45 +0000</bug_when>
    <thetext>Can confirm this under 4.10.3, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369817</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Tsi">alexhs.tsi</who>
    <bug_when>2013-05-19 15:39:22 +0000</bug_when>
    <thetext>Confirming. Chakra Linux KDE 4.10.3..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370033</commentid>
    <comment_count>7</comment_count>
    <who name="Sindre Wetjen">subfusc</who>
    <bug_when>2013-05-20 18:18:11 +0000</bug_when>
    <thetext>This also happens when I use the plasma-widget-menubar in KDE 4.10.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370292</commentid>
    <comment_count>8</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-05-21 22:54:45 +0000</bug_when>
    <thetext>*** Bug 318036 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370304</commentid>
    <comment_count>9</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-05-21 23:22:57 +0000</bug_when>
    <thetext>Git commit f2291ba1d062500aa0461f787a3801273f518aa1 by Christian Esken.
Committed on 22/05/2013 at 01:22.
Pushed by esken into branch &apos;master&apos;.

Change MPRIS backend to asynchronous communication

M  +2    -1    backends/mixer_alsa9.cpp
M  +5    -0    backends/mixer_backend.cpp
M  +93   -5    backends/mixer_mpris2.cpp
M  +3    -1    backends/mixer_mpris2.h
M  +1    -1    core/version.h
M  +1    -1    gui/viewdockareapopup.cpp

http://commits.kde.org/kmix/f2291ba1d062500aa0461f787a3801273f518aa1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370305</commentid>
    <comment_count>10</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-05-21 23:27:19 +0000</bug_when>
    <thetext>This is a call for testers: If you are able to compile KMix from trunk and run it, please do so and report back.

-----
Background information: Quite likely the issue originates from the MPRIS2 support available since KMix in KDE4.10. I now changed the MPRIS2 backend to use asynchronous communication that might fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370323</commentid>
    <comment_count>11</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-05-22 00:45:42 +0000</bug_when>
    <thetext>kmix-4.10.3 built in Fedora with patch &quot;[PATCH 1/8] MPRIS2 backend now does a asynchonous DBUS instrospection&quot;, I also applied patch from Comment 9 except changes to gui/viewdockareapopup.cpp.
But nothing changed after applying patches, desktop freezed until kmix not started.

Here more messages from log before kmix start:

QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Master_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Headphone_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Speaker_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/PCM_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Mic_Boost_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/IEC958_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Capture_0&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Auto_Mute_Mode_0_penum&quot; 
QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Digital_0&quot; 
Attaching Media Players 
plasma-desktop(2469)/plasma StatusNotifierItemSource::refreshCallback: DBusMenu disabled for this application 

Here delay follows, and when kmix started this messages appeared

bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370324</commentid>
    <comment_count>12</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-05-22 00:50:01 +0000</bug_when>
    <thetext>kmix-4.10.3 with the patch might not be enough. Test can only be done with KMix from trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370325</commentid>
    <comment_count>13</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-05-22 00:52:22 +0000</bug_when>
    <thetext>Git commit ffcbcf4ad7f2ae8b4ae146c2c940b82fa58fb7a1 by Christian Esken.
Committed on 22/05/2013 at 02:50.
Pushed by esken into branch &apos;master&apos;.

Temporarily enable polling mode for MPRIS2 backend. Currently required for properly processing changes from players.

M  +4    -1    backends/mixer_mpris2.h

http://commits.kde.org/kmix/ffcbcf4ad7f2ae8b4ae146c2c940b82fa58fb7a1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373289</commentid>
    <comment_count>14</comment_count>
    <who name="nucleo">nucleo</who>
    <bug_when>2013-06-02 19:23:06 +0000</bug_when>
    <thetext>Delay also in KDE 4.10.4 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374939</commentid>
    <comment_count>15</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-06-08 01:54:42 +0000</bug_when>
    <thetext>(In reply to comment #9)
&gt; Git commit f2291ba1d062500aa0461f787a3801273f518aa1 by Christian Esken.
&gt; Committed on 22/05/2013 at 01:22.
&gt; Pushed by esken into branch &apos;master&apos;.
&gt; 
&gt; Change MPRIS backend to asynchronous communication
&gt; 
&gt; M  +2    -1    backends/mixer_alsa9.cpp
&gt; M  +5    -0    backends/mixer_backend.cpp
&gt; M  +93   -5    backends/mixer_mpris2.cpp
&gt; M  +3    -1    backends/mixer_mpris2.h
&gt; M  +1    -1    core/version.h
&gt; M  +1    -1    gui/viewdockareapopup.cpp
&gt; 
&gt; http://commits.kde.org/kmix/f2291ba1d062500aa0461f787a3801273f518aa1

This code is still synchronous. You must *not* use waitForFinished() if you really want your code to be asynchronous. The same applies to any method that returns QDBusReply and all QDBusConnection::call*() methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376276</commentid>
    <comment_count>16</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-06-12 22:58:25 +0000</bug_when>
    <thetext>Thanks Lamarque. Looks like you are absolutely right. 
I re-read the API docs. it should definitely be a bit more specific in documentation of waitForFinished(), but I understand it now, especially after also consulting the DBUS specification.
Doing it proper is tricky, but I can probably only do it like this:
 - Register a &quot;Listener&quot; for the DBUS reply. Return and to NEVER coldplug MPRIS devices.
 - &quot;Hotplug&quot; the MPRIS device once the DBUS reply comes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382689</commentid>
    <comment_count>17</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-10 22:11:27 +0000</bug_when>
    <thetext>Actually I have no confirmed information how to go to full asynchronous operation correctly:
- Is it enough to do everything like now, but in a separate thread?
 - Or do I have to wire each and every DBUS call to a specific SLOT? The latter would really suck^H^H^H^H be highly inconvenient.

Lamarque (or anybody else): Do you have any insight in this?
I have implemented the former (&quot;in a separate Thread&quot;), but am not sure whether this is THE solution.

Also this asynchronous communication has the problem that I cannot easily do volume restoring in kmixctrl. Well, I could wait a some time until everything is hopefully there, but that again would need some extra coding. Luckily we do not have any asynchronous backends that do volume restoring (MPRIS2 and PA both skip restore).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382691</commentid>
    <comment_count>18</comment_count>
      <attachid>81050</attachid>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-10 22:16:27 +0000</bug_when>
    <thetext>Created attachment 81050
Move most DBUS commonication of the MPRIS2 backend to its own Thread

+/**
+ * Add a MPRIS control asynchronously. The concept works like this:
+ * 1) Queue a command
+ * 2) A different thread picks up the command, and executes all DBUS communication synchronously.
+ * 3) When that thread has everything collected (stream name, metadata, volume, ...), it emits plugged()
+ * 4) The GUI thread gets the plugged() signal, as it is connected to its slot notifyToReconfigureControls()
+ *
+ * It is supposed to work better, as the GUI thread is free to communicate and not locked. Well, that is the idea.
+ * I am not sure whether it actually works better than before.
+ *
+ */</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382693</commentid>
    <comment_count>19</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-07-10 22:45:49 +0000</bug_when>
    <thetext>(In reply to comment #17)
&gt; Actually I have no confirmed information how to go to full asynchronous
&gt; operation correctly:
&gt; - Is it enough to do everything like now, but in a separate thread?

Well, that it is enough to prevent blocking the kded module, which is the main goal here. Just  to clarify: threaded program is not exactly the same as asynchronous program, you can even use both at the same time, although that is not usually done. 

&gt;  - Or do I have to wire each and every DBUS call to a specific SLOT? The
&gt; latter would really suck^H^H^H^H be highly inconvenient.

That is how you use the asynchronous Qt dbus api.

&gt; Also this asynchronous communication has the problem that I cannot easily do
&gt; volume restoring in kmixctrl. Well, I could wait a some time until
&gt; everything is hopefully there, but that again would need some extra coding.
&gt; Luckily we do not have any asynchronous backends that do volume restoring
&gt; (MPRIS2 and PA both skip restore).

What you must do is prevent your kded module from blocking the entire kded daemon when processing a dbus call. You can do that by using QThread instead of the asynchronous Qt dbus api like you did. Just keep in mind that you cannot use QThread if your module uses a graphical class (inherited from QWidget) because QWidget objects must always belong to the main thread (the one that run the kded module in this case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383644</commentid>
    <comment_count>20</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-15 22:25:59 +0000</bug_when>
    <thetext>Lamarque, thanks for your input. I also received some more input, mainly from apachelogger. He convinced me that even the &quot;thread&quot;  solution might still hang MPRIS2 hotplugging - if only a single target application hangs. So I changed to a more or less fully asynchronous solution. I&apos;ll commit this in  a second to KDE trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383645</commentid>
    <comment_count>21</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-15 22:28:51 +0000</bug_when>
    <thetext>Git commit b3b8844690216b3af547775f549c192927022657 by Christian Esken.
Committed on 15/07/2013 at 22:26.
Pushed by esken into branch &apos;master&apos;.

Change MPRSI2 backend to operate nearly completely asynchronously. The still synchronous parts will be converted in the next step.

M  +126  -140  backends/mixer_mpris2.cpp
M  +80   -21   backends/mixer_mpris2.h

http://commits.kde.org/kmix/b3b8844690216b3af547775f549c192927022657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383647</commentid>
    <comment_count>22</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-15 22:32:54 +0000</bug_when>
    <thetext>*** Bug 166376 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384139</commentid>
    <comment_count>23</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-07-17 21:37:57 +0000</bug_when>
    <thetext>Git commit 6e7fb0b5ea8fb399dca5c85b51c3389d7be9b96f by Christian Esken.
Committed on 17/07/2013 at 21:35.
Pushed by esken into branch &apos;master&apos;.

Fixes for memory leaks, unitialized values. Also do error checks before evaluating DBUS reply.

M  +77   -49   backends/mixer_mpris2.cpp
M  +1    -0    backends/mixer_mpris2.h
M  +4    -0    core/mixdevice.cpp
M  +5    -1    core/mixdevice.h

http://commits.kde.org/kmix/6e7fb0b5ea8fb399dca5c85b51c3389d7be9b96f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388383</commentid>
    <comment_count>24</comment_count>
    <who name="Cédric Bellegarde">web</who>
    <bug_when>2013-08-07 09:49:57 +0000</bug_when>
    <thetext>Here with KDE 4.10.97, kmix always hang on startup but only on my laptop, not sure what is happeining...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388711</commentid>
    <comment_count>25</comment_count>
    <who name="Cédric Bellegarde">web</who>
    <bug_when>2013-08-09 12:23:41 +0000</bug_when>
    <thetext>http://quickgit.kde.org/?p=kde-workspace.git&amp;a=commit&amp;h=9ff94e7999e26aa91b2017dfd44270eb2dbb766f

Workaround for KDE 4.11 release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389835</commentid>
    <comment_count>26</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-08-14 23:46:04 +0000</bug_when>
    <thetext>Fixed in KMxi 4.4 / KDE4.11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390331</commentid>
    <comment_count>27</comment_count>
    <who name="Joseph Yasi">joe.yasi</who>
    <bug_when>2013-08-16 23:00:49 +0000</bug_when>
    <thetext>This is still not fixed for me in KDE 4.11. I am still getting a delayed startup where kmix hangs for 10-20 seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390423</commentid>
    <comment_count>28</comment_count>
    <who name="Sindre Wetjen">subfusc</who>
    <bug_when>2013-08-17 12:38:55 +0000</bug_when>
    <thetext>This is true for me as well. The bug appeared to be gone in 4.10.90~97 but after updating to 4.11, I got the problem again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390437</commentid>
    <comment_count>29</comment_count>
    <who name="Christoph Feck">cfeck</who>
    <bug_when>2013-08-17 13:27:38 +0000</bug_when>
    <thetext>Reopened based on recent comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399571</commentid>
    <comment_count>30</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-09-25 23:05:19 +0000</bug_when>
    <thetext>I have seen Cédric&apos;s workaround patch, but I do not know what that means for a real fix within KMix. What is the root cause? Can I do anything to fix it?
As far as I see the only synchronous DBUS call in use is &quot;ListNames&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413600</commentid>
    <comment_count>31</comment_count>
    <who name="Cédric Bellegarde">web</who>
    <bug_when>2013-11-23 13:19:14 +0000</bug_when>
    <thetext>I will try to switch to qmenumodel (gio menumodel from Gnome/Unity)for KDE 5, so, maybe this will be fixed automatically... ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419347</commentid>
    <comment_count>32</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-12-18 21:23:29 +0000</bug_when>
    <thetext>I found something suspicious during code review, namely a fix for bug 315383. The author added in fact an unobtrusive synchronous DBUS call via &quot;mad-&gt;playerIfc-&gt;property(&quot;Volume&quot;)&quot;. See https://projects.kde.org/projects/kde/kdemultimedia/kmix/repository/revisions/0247b50cffa6962e1863316b855c48b290103b45

As we know now, Async DBUS calls are evil, so I will refactor it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419348</commentid>
    <comment_count>33</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-12-18 21:25:36 +0000</bug_when>
    <thetext>(In reply to comment #32)
&gt; I found something suspicious during code review, namely a fix for bug
&gt; 315383. The author added in fact an unobtrusive synchronous DBUS call via
&gt; &quot;mad-&gt;playerIfc-&gt;property(&quot;Volume&quot;)&quot;. See
&gt; https://projects.kde.org/projects/kde/kdemultimedia/kmix/repository/
&gt; revisions/0247b50cffa6962e1863316b855c48b290103b45
&gt; 
&gt; As we know now, Async DBUS calls are evil, so I will refactor it.

Oops, typo. I meant: &quot;Sync DBUS calls are evil&quot; (tm)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419632</commentid>
    <comment_count>34</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-12-20 10:24:20 +0000</bug_when>
    <thetext>Git commit 0f7a603e1d327f76dbd6a62d08315b1956794d42 by Christian Esken.
Committed on 20/12/2013 at 10:17.
Pushed by esken into branch &apos;master&apos;.

Configuration menu is now using Tabs to provide a more standard,
  convenient and pleasing layout
 Sound Menu: Play button reflects playback status and shows either
  &quot;Play&quot; or &quot;Pause&quot;
 Bugfixes and Features (CCBUGS, as most bugs are already closed). Hint: Some
bugs might have actually been alreay fixed ibn KDE4.11 or KDE4.12.

Bug ID	Severity	Summary
Related: bug 20, bug 315383, bug 299477, bug 256854, bug 304144, bug 296951, bug 303608, bug 214854, bug 319600
applet
volume control
position.

M  +9    -5    CMakeLists.txt
M  +41   -20   ChangeLog
M  +5    -1    apps/KMixApp.cpp
M  +167  -238  apps/kmix.cpp
M  +8    -13   apps/kmix.h
M  +3    -0    apps/kmixctrl.cpp
M  +3    -0    apps/kmixd.cpp
M  +18   -12   backends/mixer_backend.cpp
M  +1    -0    backends/mixer_backend.h
M  +229  -150  backends/mixer_mpris2.cpp
M  +23   -6    backends/mixer_mpris2.h
M  +8    -2    backends/mixer_oss.cpp
M  +1    -1    backends/mixer_pulse.cpp
M  +9    -9    core/ControlManager.cpp
M  +102  -15   core/GlobalConfig.cpp
M  +105  -47   core/GlobalConfig.h
M  +65   -31   core/kmixdevicemanager.cpp
M  +9    -4    core/mixdevice.cpp
M  +4    -12   core/mixdevice.h
M  +6    -4    core/mixer.cpp
M  +16   -10   core/mixertoolbox.cpp
M  +1    -1    core/version.h
M  +17   -3    core/volume.cpp
M  +9    -8    core/volume.h
M  +19   -6    gui/dialogchoosebackends.cpp
M  +1    -1    gui/dialogchoosebackends.h
M  +9    -2    gui/dialogviewconfiguration.cpp
M  +37   -10   gui/guiprofile.cpp
M  +27   -24   gui/guiprofile.h
M  +93   -118  gui/kmixdockwidget.cpp
M  +3    -4    gui/kmixdockwidget.h
M  +13   -11   gui/kmixerwidget.cpp
M  +296  -91   gui/kmixprefdlg.cpp
M  +82   -32   gui/kmixprefdlg.h
M  +87   -38   gui/mdwslider.cpp
M  +4    -2    gui/mdwslider.h
M  +69   -42   gui/viewbase.cpp
M  +1    -0    gui/viewbase.h
M  +25   -30   gui/viewdockareapopup.cpp
M  +1    -1    gui/viewdockareapopup.h
M  +4    -4    gui/viewsliders.cpp
M  +1    -1    gui/volumesliderextradata.h

http://commits.kde.org/kmix/0f7a603e1d327f76dbd6a62d08315b1956794d42</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419642</commentid>
    <comment_count>35</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2013-12-20 10:41:26 +0000</bug_when>
    <thetext> @ Joseph Yasi and Sindre Wetjen and anybody else who can run KMix from trunk: If you are still affected by the bug, please upgrade to trunk with the changes I just committed. Try it and give feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419727</commentid>
    <comment_count>36</comment_count>
    <who name="Joseph Yasi">joe.yasi</who>
    <bug_when>2013-12-20 18:53:50 +0000</bug_when>
    <thetext>I just tried kmix from trunk. The delay is still happening with the menubar style set to &quot;Titlebar button&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422171</commentid>
    <comment_count>37</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2014-01-02 07:58:00 +0000</bug_when>
    <thetext>@Joseph Yasi : And you are sure tbhe delay is still KMix related? Can you disable KMix Autostart AND also KMixD (KMix Service) and try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422281</commentid>
    <comment_count>38</comment_count>
    <who name="Joseph Yasi">joe.yasi</who>
    <bug_when>2014-01-02 16:42:13 +0000</bug_when>
    <thetext>Yes. I just disabled KMix autostart, and KMixD, and there is no delay on login to KDE. I&apos;ve noticed with KMix the delay seems to be related to the menu export. Menus in other applications do not appear until KMix finally finished launching. With KMix disabled, menus appear immediately after login.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422874</commentid>
    <comment_count>39</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2014-01-05 18:18:51 +0000</bug_when>
    <thetext>Thanks for the feedback, Joseph. But as far as I understand I can not do anything, as it is menu related, and the only proposed application &quot;fix&quot; was to wait for new menu model in KDE 5. I am moving this ticket to the &quot;waiting room&quot; for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427915</commentid>
    <comment_count>40</comment_count>
    <who name="Germano Massullo (Thetra)">germano.massullo</who>
    <bug_when>2014-01-30 17:51:15 +0000</bug_when>
    <thetext>Confirming bug in Fedora 20 - KDE 4.11.5
I disabled all KDE daemons and enabling them a few per time. I found out it is a KMim problem
https://bugzilla.redhat.com/show_bug.cgi?id=1059699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440994</commentid>
    <comment_count>41</comment_count>
    <who name="Søren Holm">sgh</who>
    <bug_when>2014-04-12 15:04:04 +0000</bug_when>
    <thetext>*** Bug 329599 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440995</commentid>
    <comment_count>42</comment_count>
    <who name="Søren Holm">sgh</who>
    <bug_when>2014-04-12 15:05:39 +0000</bug_when>
    <thetext>Disabling kmixD makes it go away. What is kmixD good for and what is it doing during startup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466190</commentid>
    <comment_count>43</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2014-08-17 21:40:31 +0000</bug_when>
    <thetext>@Søren Holm: KMixD is a background service, that one can use to control the volume via DBUS, independent on if the KMix GUI is running or not.
KMixD is a KDE service, and what maybe happening is that KMixD deadlocks with a different KDE service (KMixD wait for A, and A wait for KMixD. Or some more complicated scenario).
As workaround I added now a small delay. It may work or it may not. If somebody has access to KDE trunk, please test.

Change reference: http://quickgit.kde.org/?p=kmix.git&amp;a=blobdiff&amp;h=d21d5a63af494bcdb2d3c67b6e96d5dd1197c1bd&amp;hp=94f2b018df3351ad902bc7b32ce6ba2efb8087c3&amp;hb=69aa3baf266b5e0952737dd203d7d2735e6d374b&amp;f=apps%2Fkmixd.cpp

Most relevant change:
  QTimer::singleShot( 3000, this, SLOT(delayedInitialization()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477957</commentid>
    <comment_count>44</comment_count>
    <who name="Najjar">abderrahman.najjar</who>
    <bug_when>2014-10-24 22:39:39 +0000</bug_when>
    <thetext>I can say that the bug is still present in kmix-4.14.1 (I&apos;m on Fedora 20 3.16.6-200 x86_64, all through the official F20 updates channel)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487702</commentid>
    <comment_count>45</comment_count>
    <who name="Najjar">abderrahman.najjar</who>
    <bug_when>2014-12-26 21:27:21 +0000</bug_when>
    <thetext>Is there a fix or workaround short of disabling KMixD for this bug yet?
It&apos;s still present in 4.14.3

I can&apos;t find any documentation on kmixd, so I don&apos;t know if I disable for good what I&apos;ll miss or disturb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489453</commentid>
    <comment_count>46</comment_count>
    <who name="Christian Esken">esken</who>
    <bug_when>2015-01-06 22:29:36 +0000</bug_when>
    <thetext>Git commit 91284ff2561ba9627dfe47d21593f472df9ffa8e by Christian Esken.
Committed on 06/01/2015 at 22:29.
Pushed by esken into branch &apos;master&apos;.

Add a Lock to avoid duplicate initializiation, which may help with some
startup issues (delays, lockups). Not likely a solutin for all, but
please test. Also some ceanups, less logging and fixing a small memleak.
Related: bug 318986, bug 339272, bug 339525

M  +1    -0    CMakeLists.txt
M  +122  -59   apps/KMixApp.cpp
M  +7    -10   apps/KMixApp.h
M  +2    -7    apps/kmix.cpp
M  +1    -0    apps/main.cpp
M  +1    -1    backends/mixer_mpris2.cpp
M  +4    -4    backends/mixer_pulse.cpp
M  +4    -2    core/GlobalConfig.cpp
M  +13   -0    core/GlobalConfig.h
M  +2    -1    core/mixdevice.cpp
M  +2    -2    core/mixer.cpp
M  +14   -7    gui/kmixprefdlg.cpp
M  +2    -2    gui/viewbase.cpp

http://commits.kde.org/kmix/91284ff2561ba9627dfe47d21593f472df9ffa8e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512478</commentid>
    <comment_count>47</comment_count>
    <who name="Germano Massullo (Thetra)">germano.massullo</who>
    <bug_when>2015-04-20 12:38:42 +0000</bug_when>
    <thetext>Confirming on KDE 4.14.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668989</commentid>
    <comment_count>48</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:34:30 +0000</bug_when>
    <thetext>(In reply to nucleo from comment #0)
&gt; After update from KDE 4.10.1 to 4.10.2 kmix appeared in systemtray with 20
&gt; seconds delay after KDE start but only if appmenu-qt configured to &quot;Title
&gt; bar button&quot;.
&gt; 
&gt; Reproducible: Always
&gt; 
&gt; Steps to Reproduce:
&gt; 1. Set menubar style to &quot;Title bar button&quot;.
&gt; 2. Restart KDE.
&gt; Actual Results:  
&gt; kmix appeared in systemtary with 20 second delay after KDE started.
&gt; 
&gt; Expected Results:  
&gt; No delay.
&gt; 
&gt; No delay if set menubar style to &quot;In application&quot;.
&gt; In KDE 4.10.1 with &quot;Title bar button&quot; kmix started without delay.
&gt; appmenu-qt-0.2.6 installed.
&gt; Delay happens with and without installed pulseaudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668990</commentid>
    <comment_count>49</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:35:18 +0000</bug_when>
    <thetext>(In reply to nucleo from comment #11)
&gt; kmix-4.10.3 built in Fedora with patch &quot;[PATCH 1/8] MPRIS2 backend now does
&gt; a asynchonous DBUS instrospection&quot;, I also applied patch from Comment 9
&gt; except changes to gui/viewdockareapopup.cpp.
&gt; But nothing changed after applying patches, desktop freezed until kmix not
&gt; started.
&gt; 
&gt; Here more messages from log before kmix start:
&gt; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Master_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Headphone_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Speaker_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/PCM_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Mic_Boost_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/IEC958_0&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Capture_0&quot; 
&gt; QDBusConnection for control created
&gt; &quot;/Mixers/ALSA__HDA_Intel_1/Auto_Mute_Mode_0_penum&quot; 
&gt; QDBusConnection for control created &quot;/Mixers/ALSA__HDA_Intel_1/Digital_0&quot; 
&gt; Attaching Media Players 
&gt; plasma-desktop(2469)/plasma StatusNotifierItemSource::refreshCallback:
&gt; DBusMenu disabled for this application 
&gt; 
&gt; Here delay follows, and when kmix started this messages appeared
&gt; 
&gt; bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
&gt; bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
&gt; bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu 
&gt; bool DBusMenuExporterDBus::AboutToShow(int): Condition failed: menu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668992</commentid>
    <comment_count>50</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:44:10 +0000</bug_when>
    <thetext>(In reply to modellbaukeller from comment #5)
&gt; Can confirm this under 4.10.3, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668994</commentid>
    <comment_count>51</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:44:56 +0000</bug_when>
    <thetext>(In reply to Alex Tsi from comment #6)
&gt; Confirming. Chakra Linux KDE 4.10.3..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668995</commentid>
    <comment_count>52</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:45:31 +0000</bug_when>
    <thetext>(In reply to Sindre Wetjen from comment #7)
&gt; This also happens when I use the plasma-widget-menubar in KDE 4.10.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668996</commentid>
    <comment_count>53</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:46:14 +0000</bug_when>
    <thetext>(In reply to Christian Esken from comment #8)
&gt; *** Bug 318036 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668997</commentid>
    <comment_count>54</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:46:55 +0000</bug_when>
    <thetext>(In reply to Christian Esken from comment #10)
&gt; This is a call for testers: If you are able to compile KMix from trunk and
&gt; run it, please do so and report back.
&gt; 
&gt; -----
&gt; Background information: Quite likely the issue originates from the MPRIS2
&gt; support available since KMix in KDE4.10. I now changed the MPRIS2 backend to
&gt; use asynchronous communication that might fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668999</commentid>
    <comment_count>55</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:48:32 +0000</bug_when>
    <thetext>(In reply to Christian Esken from comment #43)
&gt; @Søren Holm: KMixD is a background service, that one can use to control the
&gt; volume via DBUS, independent on if the KMix GUI is running or not.
&gt; KMixD is a KDE service, and what maybe happening is that KMixD deadlocks
&gt; with a different KDE service (KMixD wait for A, and A wait for KMixD. Or
&gt; some more complicated scenario).
&gt; As workaround I added now a small delay. It may work or it may not. If
&gt; somebody has access to KDE trunk, please test.
&gt; 
&gt; Change reference:
&gt; http://quickgit.kde.org/?p=kmix.
&gt; git&amp;a=blobdiff&amp;h=d21d5a63af494bcdb2d3c67b6e96d5dd1197c1bd&amp;hp=94f2b018df3351ad
&gt; 902bc7b32ce6ba2efb8087c3&amp;hb=69aa3baf266b5e0952737dd203d7d2735e6d374b&amp;f=apps%2
&gt; Fkmixd.cpp
&gt; 
&gt; Most relevant change:
&gt;   QTimer::singleShot( 3000, this, SLOT(delayedInitialization()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669000</commentid>
    <comment_count>56</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:49:11 +0000</bug_when>
    <thetext>(In reply to nucleo from comment #1)
&gt; I downgraded kmix to 4.10.1 and left all of KDE 4.10.2, but kmix start still
&gt; delayed.
&gt; So maybe this problem somewhere in other KDE 4.10.2 components outside kmix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669001</commentid>
    <comment_count>57</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:49:50 +0000</bug_when>
    <thetext>(In reply to nucleo from comment #2)
&gt; Impossible to start any application from kickoff or from desktop until kmix
&gt; not stared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669002</commentid>
    <comment_count>58</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:50:39 +0000</bug_when>
    <thetext>(In reply to panagiotis from comment #57)
&gt; (In reply to nucleo from comment #2)
&gt; &gt; Impossible to start any application from kickoff or from desktop until kmix
&gt; &gt; not stared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669003</commentid>
    <comment_count>59</comment_count>
    <who name="panagiotis">pmavroeidis77</who>
    <bug_when>2017-03-29 06:51:23 +0000</bug_when>
    <thetext>(In reply to nucleo from comment #4)
&gt; Bug still in 4.10.3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2002156</commentid>
    <comment_count>60</comment_count>
    <who name="Jonathan Marten">jjm</who>
    <bug_when>2021-02-12 13:32:12 +0000</bug_when>
    <thetext>Reported for KDE4.
Please confirm if still a problem with current KMix and Plasma 5.
See also bug 318986 for startup delay issues related to PulseAudio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2002170</commentid>
    <comment_count>61</comment_count>
    <who name="Germano Massullo (Thetra)">germano.massullo</who>
    <bug_when>2021-02-12 13:44:41 +0000</bug_when>
    <thetext>(In reply to Jonathan Marten from comment #60)
&gt; Reported for KDE4.
&gt; Please confirm if still a problem with current KMix and Plasma 5.
&gt; See also bug 318986 for startup delay issues related to PulseAudio.

I am not experiencing this problem on Plasma 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2006991</commentid>
    <comment_count>62</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2021-02-27 04:33:15 +0000</bug_when>
    <thetext>Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED &gt; WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2015191</commentid>
    <comment_count>63</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2021-03-14 04:33:34 +0000</bug_when>
    <thetext>This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED &gt; WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81050</attachid>
            <date>2013-07-10 22:16:27 +0000</date>
            <delta_ts>2013-07-10 22:16:27 +0000</delta_ts>
            <desc>Move most DBUS commonication of the MPRIS2 backend to its own Thread</desc>
            <filename>kmix-20secondDelay-bug317926.patch</filename>
            <type>text/plain</type>
            <size>14330</size>
            <attacher name="Christian Esken">esken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21peGVyX21wcmlzMi5jcHAgYi9iYWNrZW5kcy9taXhlcl9t
cHJpczIuY3BwCmluZGV4IDE4NjQxMjUuLjQxMDQ0YTIgMTAwNjQ0Ci0tLSBhL2JhY2tlbmRzL21p
eGVyX21wcmlzMi5jcHAKKysrIGIvYmFja2VuZHMvbWl4ZXJfbXByaXMyLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgIm1peGVyX21wcmlzMi5oIgogI2luY2x1ZGUgImNvcmUvbWl4ZXIu
aCIKICNpbmNsdWRlICJjb3JlL0NvbnRyb2xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiY29yZS9HbG9i
YWxDb25maWcuaCIKIAogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4K
QEAgLTUyLDYgKzUzLDkgQEAgaW50IE1peGVyX01QUklTMjo6b3BlbigpCiAJX2lkID0gIlBsYXli
YWNrIFN0cmVhbXMiOwogCV9taXhlci0+c2V0RHluYW1pYygpOwogCWFkZEFsbFJ1bm5pbmdQbGF5
ZXJzQW5kSW5pdEhvdHBsdWcoKTsKKwlNaXhlcl9NUFJJUzJfVGhyZWFkKiB0aHJlYWQgPSBuZXcg
TWl4ZXJfTVBSSVMyX1RocmVhZCh0aGlzKTsKKwljb25uZWN0KHRocmVhZCwgU0lHTkFMKHBsdWdn
ZWQoUVN0cmluZykpLCB0aGlzLCBTTE9UKG5vdGlmeVRvUmVjb25maWd1cmVDb250cm9scyhRU3Ry
aW5nKSkpOworCXRocmVhZC0+c3RhcnQoKTsKIAogCS8vY29ubmVjdCh0aGlzLCBTSUdOQUwoY29u
dHJvbENoYW5nZWQoKSksIFNMT1QocmVhZFNldEZyb21IVygpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rp
b24pOwogCXJldHVybiAwOwpAQCAtMzAzLDcgKzMwNyw3IEBAIGludCBNaXhlcl9NUFJJUzI6OmFk
ZEFsbFJ1bm5pbmdQbGF5ZXJzQW5kSW5pdEhvdHBsdWcoKQogCQl7CiAJCQlpZiAoIHMuc3RhcnRz
V2l0aCgib3JnLm1wcmlzLk1lZGlhUGxheWVyMiIpICkKIAkJCXsKLQkJCQlhZGRNcHJpc0NvbnRy
b2woZGJ1c0Nvbm4sIHMpOworCQkJCWFzeW5jQWRkTXByaXNDb250cm9sKHMpOwogCQkJCWtEZWJ1
ZygpIDw8ICJBdHRhY2hlZCAiIDw8IHM7CiAJCQl9CiAJCX0KQEAgLTMzNyw2ICszNDEsODIgQEAg
aW50IE1peGVyX01QUklTMjo6YWRkQWxsUnVubmluZ1BsYXllcnNBbmRJbml0SG90cGx1ZygpCiAv
LwlyZXR1cm4gJm1zZzsKIC8vfQogCisKKworLyoqCisgKiBBZGQgYSBNUFJJUyBjb250cm9sIGFz
eW5jaHJvbm91c2x5LiBUaGUgY29uY2VwdCB3b3JrcyBsaWtlIHRoaXM6CisgKiAxKSBRdWV1ZSBh
IGNvbW1hbmQKKyAqIDIpIEEgZGlmZmVyZW50IHRocmVhZCBwaWNrcyB1cCB0aGUgY29tbWFuZCwg
YW5kIGV4ZWN1dGVzIGFsbCBEQlVTIGNvbW11bmljYXRpb24gc3luY2hyb25vdXNseS4KKyAqIDMp
IFdoZW4gdGhhdCB0aHJlYWQgaGFzIGV2ZXJ5dGhpbmcgY29sbGVjdGVkIChzdHJlYW0gbmFtZSwg
bWV0YWRhdGEsIHZvbHVtZSwgLi4uKSwgaXQgZW1pdHMgcGx1Z2dlZCgpCisgKiA0KSBUaGUgR1VJ
IHRocmVhZCBnZXRzIHRoZSBwbHVnZ2VkKCkgc2lnbmFsLCBhcyBpdCBpcyBjb25uZWN0ZWQgdG8g
aXRzIHNsb3Qgbm90aWZ5VG9SZWNvbmZpZ3VyZUNvbnRyb2xzKCkKKyAqCisgKiBJdCBpcyBzdXBw
b3NlZCB0byB3b3JrIGJldHRlciwgYXMgdGhlIEdVSSB0aHJlYWQgaXMgZnJlZSB0byBjb21tdW5p
Y2F0ZSBhbmQgbm90IGxvY2tlZC4gV2VsbCwgdGhhdCBpcyB0aGUgaWRlYS4KKyAqIEkgYW0gbm90
IHN1cmUgd2hldGhlciBpdCBhY3R1YWxseSB3b3JrcyBiZXR0ZXIgdGhhbiBiZWZvcmUuCisgKgor
ICovCit2b2lkIE1peGVyX01QUklTMjo6YXN5bmNBZGRNcHJpc0NvbnRyb2woUVN0cmluZyBidXNE
ZXN0aW5hdGlvbikKK3sKKwlCYWNrZW5kTWVzc2FnZSBtZXNzYWdlOworCW1lc3NhZ2UuY29tbWFu
ZCA9ICJwbHVnIjsKKwltZXNzYWdlLmFyZyA9IGJ1c0Rlc3RpbmF0aW9uOworCisJbWVzc2FnZVF1
ZXVlTG9jay5sb2NrKCk7IC8vIGxvY2sgZm9yIGVucXVldWUoKSwgbWVtb3J5IGJhcnJpZXIsIGFu
ZCB3YWtlKigpCisJbWVzc2FnZVF1ZXVlLmVucXVldWUobWVzc2FnZSk7CisJa0RlYnVnKCkgPDwg
IkVucXVldWVkIiA8PCBtZXNzYWdlLmNvbW1hbmQgPDwgIiwgcXVldWVTaXplPSIgPDwgbWVzc2Fn
ZVF1ZXVlLnNpemUoKTsKKwltZXNzYWdlUXVldWVOb3RpZmllci53YWtlT25lKCk7IC8vIG9ubHkg
b25lIHRocmVhZCBpcyByZWFkaW5nID0+IHdha2VPbmUoKSBpcyBlbm91Z2gKKwltZXNzYWdlUXVl
dWVMb2NrLnVubG9jaygpOworfQorCit2b2lkIE1peGVyX01QUklTMl9UaHJlYWQ6OnJ1bigpCit7
CisJcmV0dXJuIG1lc3NhZ2VRdWV1ZVRocmVhZExvb3AoKTsKK30KK3ZvaWQgTWl4ZXJfTVBSSVMy
X1RocmVhZDo6bWVzc2FnZVF1ZXVlVGhyZWFkTG9vcCgpCit7CisJa0RlYnVnKCkgPDwgIlN0YXJ0
IE1peGVyX01QUklTMl9UaHJlYWQiOworCWJhY2tlbmQtPm1lc3NhZ2VRdWV1ZUxvY2subG9jaygp
OyAvLyBsb2NrIGZvciB0aGUgd2FpdCgpIGJlbG93CisJLy8gVGhlIGxvb3AgaXMgYnVpbHQgaW4g
YSB3YXkgdGhhdCBpdCBpcyBpcnJlbGV2YW50IGlmIHdlIG1pc3Mgd2FrZSooKSBjYWxscyBiZXR3
ZWVuIHRocmVhZCBzdGFydCBhbmQKKwkvLyBtZXNzYWdlUXVldWVMb2NrLmxvY2soKQorCXdoaWxl
ICh0cnVlKQorCXsKKwkJa0RlYnVnKCkgPDwgIlN0YXJ0IE1peGVyX01QUklTMl9UaHJlYWQgbG9v
cCBpdGVyYXRpb24iOworCQlpZiAoIWJhY2tlbmQtPm1lc3NhZ2VRdWV1ZS5pc0VtcHR5KCkpCisJ
CXsKKwkJCUJhY2tlbmRNZXNzYWdlIG1lc3NhZ2UgPSBiYWNrZW5kLT5tZXNzYWdlUXVldWUuZGVx
dWV1ZSgpOworCQkJa0RlYnVnKCkgPDwgIlJlY2VpdmVkIGNvbW1hbmQgIiA8PCBtZXNzYWdlLmNv
bW1hbmQgPDwgIiwgYXJnPSIgPDwgbWVzc2FnZS5hcmc7CisKKwkJCWlmIChtZXNzYWdlLmNvbW1h
bmQgPT0gInBsdWciKQorCQkJeworCQkJCWJhY2tlbmQtPmFkZE1wcmlzQ29udHJvbChtZXNzYWdl
LmFyZyk7CisJCQkJZW1pdCBwbHVnZ2VkKG1lc3NhZ2UuYXJnKTsKKwkJCX0KKwkJCWVsc2UgaWYg
KG1lc3NhZ2UuY29tbWFuZCA9PSAicXVpdCIpCisJCQkJYnJlYWs7CisKKwkJCWlmICghYmFja2Vu
ZC0+bWVzc2FnZVF1ZXVlLmlzRW1wdHkoKSkKKwkJCXsKKwkJCQkvLyBNb3JlIGRhdGE6IFllYWgh
ISEgPT4gcHJvY2VzcyBpdCBpbW1lZGlhdGVseQorCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisK
KwkJa0RlYnVnKCkgPDwgIlN0YXJ0IE1peGVyX01QUklTMl9UaHJlYWQgbG9vcCBpdGVyYXRpb24g
cHQyIjsKKworCQlpZiAoYXBwU2h1dGRvd24pIC8vIFRPRE8uIEhBQ0shISEKKwkJCWJyZWFrOwor
CisJCWtEZWJ1ZygpIDw8ICJTdGFydCBNaXhlcl9NUFJJUzJfVGhyZWFkIGxvb3AgaXRlcmF0aW9u
IHB0MyI7CisJCS8vIFdhaXQgNSBzZWNzLiBEbyBub3Qgd2FpdCAiZm9yZXZlciIsIGFzIHdlICBp
Z2h0IHdhbnQgdG8gZG8gb3RoZXIgZmFuY3kgdGhpbmdzIGZyb20gdGltZSB0byB0aW1lLCBsaWtl
CisJCS8vIGJvb2trZWVwaW5nIGFuZCByZWFjdGluZyBvbiBhcHBTaHV0ZG93bi4KKwkJYmFja2Vu
ZC0+bWVzc2FnZVF1ZXVlTm90aWZpZXIud2FpdCgmYmFja2VuZC0+bWVzc2FnZVF1ZXVlTG9jaywg
NTAwMCk7CisJCWtEZWJ1ZygpIDw8ICJTdGFydCBNaXhlcl9NUFJJUzJfVGhyZWFkIGxvb3AgaXRl
cmF0aW9uIHB0NCI7CisKKwl9CisJYmFja2VuZC0+bWVzc2FnZVF1ZXVlTG9jay51bmxvY2soKTsK
K30KKworCisKIC8qKgogICogQWRkIHRoZSBNUFJJUyBjb250cm9sIGRlc2lnbmF0ZWQgYnkgdGhl
IERCVVMgYnVzRGVzdGluYXRpb24KICAqIHRvIHRoZSBpbnRlcm5hbCBhcHBzIGxpc3QuCkBAIC0z
NDQsOCArNDI0LDExIEBAIGludCBNaXhlcl9NUFJJUzI6OmFkZEFsbFJ1bm5pbmdQbGF5ZXJzQW5k
SW5pdEhvdHBsdWcoKQogICogQHBhcmFtIGNvbm4gQW4gb3BlbiBjb25uZWN0aW9uIHRvIHRoZSBE
QlVTIFNlc3Npb24gQnVzCiAgKiBAcGFyYW0gYnVzRGVzdGluYXRpb24gVGhlIERCVVMgYnVzRGVz
dGluYXRpb24sIGUuZy4gIm9yZy5tcHJpcy5NZWRpYVBsYXllcjIuYW1hcm9rIgogICovCi12b2lk
IE1peGVyX01QUklTMjo6YWRkTXByaXNDb250cm9sKFFEQnVzQ29ubmVjdGlvbiYgY29ubiwgUVN0
cmluZyBidXNEZXN0aW5hdGlvbikKK3ZvaWQgTWl4ZXJfTVBSSVMyOjphZGRNcHJpc0NvbnRyb2wo
UVN0cmluZyBidXNEZXN0aW5hdGlvbikKIHsKKwlRREJ1c0Nvbm5lY3Rpb24gY29ubiA9IFFEQnVz
Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworCU1peGVyX01QUklTMiogbWl4ZXJNcHJpcyA9IHRo
aXM7CisKIAkvLyBUT0RPIFRoaXMgbG9va3MgYnVnZ3ksIGFzIHdlIHN0cmlwIG9mZiB0aGUgKG9w
dGlvbmFsKSBpbnN0YW5jZSBpZC4gVGhpcyBtZWFucyB3ZSBmYWlsIHRvIGFkZAogCS8vICAgICAg
cGxheWVycyBtdWx0aSBpbnN0YW5jZSBwbGF5ZXJzIChlLmcuIFZMQyBjYW4gcnVuIGluIG11bHRp
cGxlIGluc3RhbmNlcykuCiAJLy8gICAgICBDaGVjayBib3RoIGFkZE1wcmlzQ29udHJvbCgpIGFu
ZCBuZXdNZWRpYVBsYXllcigpIGZvciAibmFtZS5taWQobGFzdERvdCsxKTsiCkBAIC0zNjcsMjgg
KzQ1MCwxOCBAQCB2b2lkIE1peGVyX01QUklTMjo6YWRkTXByaXNDb250cm9sKFFEQnVzQ29ubmVj
dGlvbiYgY29ubiwgUVN0cmluZyBidXNEZXN0aW5hdGlvbgogLy8JfQogCiAKLQlRREJ1c0ludGVy
ZmFjZSAqcWRiaVByb3BzICA9IG5ldyBRREJ1c0ludGVyZmFjZShRU3RyaW5nKGJ1c0Rlc3RpbmF0
aW9uKSwgUVN0cmluZygiL29yZy9tcHJpcy9NZWRpYVBsYXllcjIiKSwgIm9yZy5mcmVlZGVza3Rv
cC5EQnVzLlByb3BlcnRpZXMiLCBjb25uLCB0aGlzKTsKLQlRREJ1c0ludGVyZmFjZSAqcWRiaVBs
YXllciA9IG5ldyBRREJ1c0ludGVyZmFjZShRU3RyaW5nKGJ1c0Rlc3RpbmF0aW9uKSwgUVN0cmlu
ZygiL29yZy9tcHJpcy9NZWRpYVBsYXllcjIiKSwgIm9yZy5tcHJpcy5NZWRpYVBsYXllcjIuUGxh
eWVyIiwgY29ubiwgdGhpcyk7CisJUURCdXNJbnRlcmZhY2UgKnFkYmlQcm9wcyAgPSBuZXcgUURC
dXNJbnRlcmZhY2UoUVN0cmluZyhidXNEZXN0aW5hdGlvbiksIFFTdHJpbmcoIi9vcmcvbXByaXMv
TWVkaWFQbGF5ZXIyIiksICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiwgY29ubiwg
bWl4ZXJNcHJpcyk7CisJUURCdXNJbnRlcmZhY2UgKnFkYmlQbGF5ZXIgPSBuZXcgUURCdXNJbnRl
cmZhY2UoUVN0cmluZyhidXNEZXN0aW5hdGlvbiksIFFTdHJpbmcoIi9vcmcvbXByaXMvTWVkaWFQ
bGF5ZXIyIiksICJvcmcubXByaXMuTWVkaWFQbGF5ZXIyLlBsYXllciIsIGNvbm4sIG1peGVyTXBy
aXMpOwogCiAJTVByaXNBcHBkYXRhKiBtYWQgPSBuZXcgTVByaXNBcHBkYXRhKCk7CiAJbWFkLT5p
ZCA9IGlkOwogCW1hZC0+cHJvcGVydHlJZmMgPSBxZGJpUHJvcHM7CiAJbWFkLT5wbGF5ZXJJZmMg
PSBxZGJpUGxheWVyOwogCi0JYXBwcy5pbnNlcnQoaWQsIG1hZCk7CisJbWl4ZXJNcHJpcy0+YXBw
cy5pbnNlcnQoaWQsIG1hZCk7CiAKIAlRU3RyaW5nIHJlYWRhYmxlTmFtZSA9IGlkOwogCi0JLyoK
LQkgKiAJUURCdXNJbnRlcmZhY2UgZGJ1c0lmYygib3JnLmZyZWVkZXNrdG9wLkRCdXMiLCAiL29y
Zy9mcmVlZGVza3RvcC9EQnVzIiwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJl
ZWRlc2t0b3AuREJ1cyIsIGRidXNDb25uKTsKLQlRREJ1c1BlbmRpbmdSZXBseTxRU3RyaW5nTGlz
dD4gcmVwbCA9IGRidXNJZmMuYXN5bmNDYWxsKCJMaXN0TmFtZXMiKTsKLQlyZXBsLndhaXRGb3JG
aW5pc2hlZCgpOwotCSAqCi0JICovCi0KLS8vCWlmIChpZCAhPSAiY2xlbWVudGluZSIpCi0vLwl7
CiAJCVFMaXN0PFFWYXJpYW50PiBhcmc7CiAJCWFyZy5hcHBlbmQoUVN0cmluZygib3JnLm1wcmlz
Lk1lZGlhUGxheWVyMiIpKTsKIAkJYXJnLmFwcGVuZChRU3RyaW5nKCJJZGVudGl0eSIpKTsKQEAg
LTQxMywxOCArNDg2LDYgQEAgdm9pZCBNaXhlcl9NUFJJUzI6OmFkZE1wcmlzQ29udHJvbChRREJ1
c0Nvbm5lY3Rpb24mIGNvbm4sIFFTdHJpbmcgYnVzRGVzdGluYXRpb24KIAkJUURCdXNQZW5kaW5n
UmVwbHk8UVZhcmlhbnQgPiByZXBsMiA9IG1hZC0+cHJvcGVydHlJZmMtPmFzeW5jQ2FsbCgiR2V0
IiwgdjEsIHYyKTsKIAkJcmVwbDIud2FpdEZvckZpbmlzaGVkKCk7CiAJCVFEQnVzTWVzc2FnZSBt
c2cgPSByZXBsMi5yZXBseSgpOwotCi0vLwkJUURCdXNNZXNzYWdlIG1zZyA9IG1hZC0+cHJvcGVy
dHlJZmMtPmNhbGxXaXRoQXJndW1lbnRMaXN0KFFEQnVzOjpCbG9jaywgIkdldCIsIGFyZyk7Ci0K
LQkJa0RlYnVnKCkgPDwgIihtYXJvayksIG1zZz0iIDw8IG1zZzsKLS8vCQlrRGVidWcoKSA8PCAi
KG1hcm9rKSwgbXNnMj0iIDw8IG1zZzIgPDwgIiwgaXNWYWxpZD0iIDw8IHJlcGwyLmlzVmFsaWQo
KSA8PCAiLCBpc0ZpbmlzaGVkPSIgPDwgcmVwbDIuaXNGaW5pc2hlZCgpIDw8ICIsIGlzRXJyb3I9
IiA8PCByZXBsMi5pc0Vycm9yKCk7Ci0KLQkJLy9jaGFyIG1ldGhvZFtdID0gIkdldCI7Ci0vLwkJ
UURCdXNNZXNzYWdlKiBtc2cgPSBkYnVzR2V0QXN5bmNSZXBseSgiR2V0IiwgYXJnLCBtYWQtPnBy
b3BlcnR5SWZjKTsKLQotLy8JCWlmICggIXJlcGwuaXNFcnJvcigpKQotLy8JCXsKLQkJLy9tc2cg
PSBjb25uLmNhbGwocXVlcnksIFFEQnVzOjpCbG9jaywgNSk7CiAJCWlmICggbXNnLnR5cGUoKSA9
PSBRREJ1c01lc3NhZ2U6OlJlcGx5TWVzc2FnZSApCiAJCXsKIAkJCVFMaXN0PFFWYXJpYW50PiBy
ZXBsID0gbXNnLmFyZ3VtZW50cygpOwpAQCAtNDQzLDcgKzUwNCw2IEBAIHZvaWQgTWl4ZXJfTVBS
SVMyOjphZGRNcHJpc0NvbnRyb2woUURCdXNDb25uZWN0aW9uJiBjb25uLCBRU3RyaW5nIGJ1c0Rl
c3RpbmF0aW9uCiAJCXsKIAkJCXFXYXJuaW5nKCkgPDwgIkVycm9yICgiIDw8IG1zZy50eXBlKCkg
PDwgIik6ICIgPDwgbXNnLmVycm9yTmFtZSgpIDw8ICIgIiA8PCBtc2cuZXJyb3JNZXNzYWdlKCk7
CiAJCX0KLS8vCX0KIAogCQkJLy8gVE9ETyBUaGlzIGhhcmRjb2RlZCBhcHBsaWNhdGlvbiBsaXN0
IGlzIGEgcXVpY2sgaGFjay4gSXQgc2hvdWxkIGJlIGdlbmVyYWxpemVkLgogCQkJTWl4RGV2aWNl
OjpDaGFubmVsVHlwZSBjdCA9IE1peERldmljZTo6QVBQTElDQVRJT05fU1RSRUFNOwpAQCAtNDU2
LDggKzUxNiwxMSBAQCB2b2lkIE1peGVyX01QUklTMjo6YWRkTXByaXNDb250cm9sKFFEQnVzQ29u
bmVjdGlvbiYgY29ubiwgUVN0cmluZyBidXNEZXN0aW5hdGlvbgogCQkJZWxzZSBpZiAoaWQuc3Rh
cnRzV2l0aCgieG1tcyIpKSB7CiAJCQkJY3QgPSBNaXhEZXZpY2U6OkFQUExJQ0FUSU9OX1hNTTI7
CiAJCQl9CisJCQllbHNlIGlmIChpZC5zdGFydHNXaXRoKCJ0b21haGF3ayIpKSB7CisJCQkJY3Qg
PSBNaXhEZXZpY2U6OkFQUExJQ0FUSU9OX1RPTUFIQVdLOworCQkJfQogCi0JCQlNaXhEZXZpY2Uq
IG1kTmV3ID0gbmV3IE1peERldmljZShfbWl4ZXIsIGlkLCByZWFkYWJsZU5hbWUsIGN0KTsKKwkJ
CU1peERldmljZSogbWROZXcgPSBuZXcgTWl4RGV2aWNlKG1peGVyTXByaXMtPl9taXhlciwgaWQs
IHJlYWRhYmxlTmFtZSwgY3QpOwogCQkJLy8gTVBSSVMyIGRvZXNuJ3Qgc3VwcG9ydCBhbiBhY3R1
YWwgbXV0ZSBzd2l0Y2guIE11dGUgaXMgZGVmaW5lZCBhcyB2b2x1bWUgPSAwLjAKIAkJCS8vIFRo
dXMgd2Ugd29uJ3QgYWRkIHRoZSBwbGF5YmFjayBzd2l0Y2gKIAkJCVZvbHVtZSogdm9sID0gbmV3
IFZvbHVtZSggMTAwLCAwLCBmYWxzZSwgZmFsc2UpOwpAQCAtNDY4LDE3ICs1MzEsMjIgQEAgdm9p
ZCBNaXhlcl9NUFJJUzI6OmFkZE1wcmlzQ29udHJvbChRREJ1c0Nvbm5lY3Rpb24mIGNvbm4sIFFT
dHJpbmcgYnVzRGVzdGluYXRpb24KIAkJCW1kTmV3LT5zZXRBcHBsaWNhdGlvblN0cmVhbSh0cnVl
KTsKIAkJCW1kTmV3LT5hZGRQbGF5YmFja1ZvbHVtZSgqdm9sKTsKIAotCSAgICAgICAgbV9taXhE
ZXZpY2VzLmFwcGVuZCggbWROZXctPmFkZFRvUG9vbCgpICk7CisJCQltaXhlck1wcmlzLT5tX21p
eERldmljZXMuYXBwZW5kKCBtZE5ldy0+YWRkVG9Qb29sKCkgKTsKIAogCQkJLy8JY29ubi5jb25u
ZWN0KCIiLCBRU3RyaW5nKCIvb3JnL21wcmlzL01lZGlhUGxheWVyMiIpLCAib3JnLmZyZWVkZXNr
dG9wLkRCdXMuUHJvcGVydGllcyIsICJQcm9wZXJ0aWVzQ2hhbmdlZCIsIG1hZCwgU0xPVCh2b2x1
bWVDaGFuZ2VkSW5jb21pbmcoUVN0cmluZyxRTGlzdDxRVmFyaWFudD4pKSApOwogCQkJY29ubi5j
b25uZWN0KGJ1c0Rlc3RpbmF0aW9uLCBRU3RyaW5nKCIvb3JnL21wcmlzL01lZGlhUGxheWVyMiIp
LCAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIsICJQcm9wZXJ0aWVzQ2hhbmdlZCIs
IG1hZCwgU0xPVCh2b2x1bWVDaGFuZ2VkSW5jb21pbmcoUVN0cmluZyxRVmFyaWFudE1hcCxRU3Ry
aW5nTGlzdCkpICk7Ci0JCQljb25uZWN0KG1hZCwgU0lHTkFMKHZvbHVtZUNoYW5nZWQoTVByaXNB
cHBkYXRhKixkb3VibGUpKSwgdGhpcywgU0xPVCh2b2x1bWVDaGFuZ2VkKE1QcmlzQXBwZGF0YSos
ZG91YmxlKSkgKTsKKwkJCWNvbm5lY3QobWFkLCBTSUdOQUwodm9sdW1lQ2hhbmdlZChNUHJpc0Fw
cGRhdGEqLGRvdWJsZSkpLCBtaXhlck1wcmlzLCBTTE9UKHZvbHVtZUNoYW5nZWQoTVByaXNBcHBk
YXRhKixkb3VibGUpKSApOwogCiAJCQljb25uLmNvbm5lY3QoYnVzRGVzdGluYXRpb24sIFFTdHJp
bmcoIi9QbGF5ZXIiKSwgIm9yZy5mcmVlZGVza3RvcC5NZWRpYVBsYXllciIsICJUcmFja0NoYW5n
ZSIsIG1hZCwgU0xPVCh0cmFja0NoYW5nZWRJbmNvbWluZyhRVmFyaWFudE1hcCkpICk7Ci0JCQl2
b2x1bWVDaGFuZ2VkKG1hZCwgbWFkLT5wbGF5ZXJJZmMtPnByb3BlcnR5KCJWb2x1bWUiKS50b0Rv
dWJsZSgpKTsKKwkJCW1peGVyTXByaXMtPnZvbHVtZUNoYW5nZWQobWFkLCBtYWQtPnBsYXllcklm
Yy0+cHJvcGVydHkoIlZvbHVtZSIpLnRvRG91YmxlKCkpOwogfQogCiAKK3ZvaWQgTWl4ZXJfTVBS
SVMyOjpub3RpZnlUb1JlY29uZmlndXJlQ29udHJvbHMoUVN0cmluZyBzdHJlYW1JZCkKK3sKKwkv
LyBjdXJyZW50bHkgd2UgZG8gbm90IHVzZSB0aGUgc3RyZWFtSWQKKwlub3RpZnlUb1JlY29uZmln
dXJlQ29udHJvbHMoKTsKK30KIAogdm9pZCBNaXhlcl9NUFJJUzI6Om5vdGlmeVRvUmVjb25maWd1
cmVDb250cm9scygpCiB7CkBAIC00OTUsOSArNTYzLDcgQEAgdm9pZCBNaXhlcl9NUFJJUzI6Om5l
d01lZGlhUGxheWVyKFFTdHJpbmcgbmFtZSwgUVN0cmluZyBvbGRPd25lciwgUVN0cmluZyBuZXdP
d24KIAkJaWYgKCBvbGRPd25lci5pc0VtcHR5KCkgJiYgIW5ld093bmVyLmlzRW1wdHkoKSkKIAkJ
ewogCQkJa0RlYnVnKCkgPDwgIk1lZGlhcGxheWVyIHJlZ2lzdGVyczogIiA8PCBuYW1lOwotCQkJ
UURCdXNDb25uZWN0aW9uIGRidXNDb25uID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7
Ci0JCQlhZGRNcHJpc0NvbnRyb2woZGJ1c0Nvbm4sIG5hbWUpOwotCQkgICAgbm90aWZ5VG9SZWNv
bmZpZ3VyZUNvbnRyb2xzKCk7CisJCQlhc3luY0FkZE1wcmlzQ29udHJvbChuYW1lKTsKIAkJfQog
CQllbHNlIGlmICggIW9sZE93bmVyLmlzRW1wdHkoKSAmJiBuZXdPd25lci5pc0VtcHR5KCkpCiAJ
CXsKQEAgLTU2MCw2ICs2MjYsOSBAQCB2b2lkIE1QcmlzQXBwZGF0YTo6dm9sdW1lQ2hhbmdlZElu
Y29taW5nKFFTdHJpbmcgLyppZmMqLyxRVmFyaWFudE1hcCBtc2cgLFFTdHJpbgogTWl4ZXJfTVBS
SVMyOjp+TWl4ZXJfTVBSSVMyKCkKIHsKIAljbG9zZSgpOworCW1lc3NhZ2VRdWV1ZUxvY2subG9j
aygpOyAvLyBVc2luZyBsb2NrKCkgdG8gY3JlYXRlIGEgbWVtb3J5IGJhcnJpZXIKKwltZXNzYWdl
UXVldWVOb3RpZmllci53YWtlQWxsKCk7CisJbWVzc2FnZVF1ZXVlTG9jay51bmxvY2soKTsKIH0K
IAogTVByaXNBcHBkYXRhOjpNUHJpc0FwcGRhdGEoKQpkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWl4
ZXJfbXByaXMyLmggYi9iYWNrZW5kcy9taXhlcl9tcHJpczIuaAppbmRleCAxOGUyYjE4Li43NjNh
MTM1IDEwMDY0NAotLS0gYS9iYWNrZW5kcy9taXhlcl9tcHJpczIuaAorKysgYi9iYWNrZW5kcy9t
aXhlcl9tcHJpczIuaApAQCAtMjMsMTAgKzIzLDEyIEBACiAjZGVmaW5lIE1peGVyX01QUklTMl9I
CiAKICNpbmNsdWRlIDxRU3RyaW5nPgotI2luY2x1ZGUgPFFNYWluV2luZG93PgogI2luY2x1ZGUg
PFF0REJ1cz4KICNpbmNsdWRlIDxRREJ1c0ludGVyZmFjZT4KICNpbmNsdWRlIDxRTWFwPgorI2lu
Y2x1ZGUgPFFNdXRleD4KKyNpbmNsdWRlIDxRV2FpdENvbmRpdGlvbj4KKyNpbmNsdWRlIDxRUXVl
dWU+CiAKICNpbmNsdWRlICJtaXhlcl9iYWNrZW5kLmgiCiAKQEAgLTQ5LDE0ICs1MSwzMSBAQCBz
aWduYWxzOgogfTsKIAogCitjbGFzcyBCYWNrZW5kTWVzc2FnZQoreworcHVibGljOgorCisJQmFj
a2VuZE1lc3NhZ2UoKQorCXsKKwkJb2JqZWN0ID0gMDsKKwl9OworCisJUVN0cmluZyBjb21tYW5k
OworCVFTdHJpbmcgYXJnOworCVFPYmplY3QqIG9iamVjdDsKK307CisKK2NsYXNzIE1peGVyX01Q
UklTMl9UaHJlYWQ7CiAKIGNsYXNzIE1peGVyX01QUklTMiA6IHB1YmxpYyBNaXhlcl9CYWNrZW5k
CiB7CiAgIFFfT0JKRUNUCisKKyAgZnJpZW5kIGNsYXNzIE1peGVyX01QUklTMl9UaHJlYWQ7CisK
IHB1YmxpYzoKICAgIE1peGVyX01QUklTMihNaXhlciAqbWl4ZXIsIGludCBkZXZpY2UpOwogICAg
IHZpcnR1YWwgfk1peGVyX01QUklTMigpOwotICAgIHZvaWQgYWRkTXByaXNDb250cm9sKFFEQnVz
Q29ubmVjdGlvbiYgY29ubiwgUVN0cmluZyBhcmcxKTsKICAgICBRU3RyaW5nIGdldERyaXZlck5h
bWUoKTsKICAgICB2aXJ0dWFsIFFTdHJpbmcgZ2V0SWQoKSBjb25zdCB7IHJldHVybiBfaWQ7IH07
CiAKQEAgLTc3LDYgKzk2LDggQEAgcHVibGljOgogcHVibGljIHNsb3RzOgogICAgIHZvaWQgdm9s
dW1lQ2hhbmdlZChNUHJpc0FwcGRhdGEgKm1hZCwgZG91YmxlKTsKICAgICB2b2lkIG5ld01lZGlh
UGxheWVyKFFTdHJpbmcgbmFtZSwgUVN0cmluZyBvbGRPd25lciwgUVN0cmluZyBuZXdPd25lcik7
CisgICAgdm9pZCBhZGRNcHJpc0NvbnRyb2woUVN0cmluZyBhcmcxKTsKKwogLy9wcml2YXRlIHNs
b3RzOgogCS8qKgogCSAqIFRoaXMgdHJhbnNwb3J0cyBhbnkgY2hhbmdlcyB0byB0aGUgd29ybGQg
b3V0c2lkZSB0aGlzIGJha2NlbmQuIEl0IGlzIGNvbm5lY3RlZCB0byB0aGUgc2xvdCByZWFkU2V0
RnJvbUhXKCkKQEAgLTg1LDE1ICsxMDYsNDEgQEAgcHVibGljIHNsb3RzOgogLy8Jdm9pZCBjb250
cm9sQ2hhbmdlZCgpOwogCiBwcml2YXRlOgorICAgIHZvaWQgYXN5bmNBZGRNcHJpc0NvbnRyb2wo
UVN0cmluZyBidXNEZXN0aW5hdGlvbik7CisgICAgdm9pZCBtZXNzYWdlUXVldWVUaHJlYWRMb29w
KCk7CiAgICAgaW50IGFkZEFsbFJ1bm5pbmdQbGF5ZXJzQW5kSW5pdEhvdHBsdWcoKTsKICAgICB2
b2lkIG5vdGlmeVRvUmVjb25maWd1cmVDb250cm9scygpOworICAgIHZvaWQgbm90aWZ5VG9SZWNv
bmZpZ3VyZUNvbnRyb2xzKFFTdHJpbmcgc3RyZWFtSWQpOwogICAgIHZvaWQgdm9sdW1lQ2hhbmdl
ZEludGVybmFsKHNoYXJlZF9wdHI8TWl4RGV2aWNlPiBtZCwgaW50IHZvbHVtZVBlcmNlbnRhZ2Up
OwogLy8Jc3RhdGljIFFEQnVzTWVzc2FnZSogZGJ1c0dldEFzeW5jUmVwbHkoY2hhciBtZXRob2Rb
XSwgUURCdXNJbnRlcmZhY2UqIG1hZCk7CiAvLwlzdGF0aWMgUURCdXNNZXNzYWdlKiBkYnVzR2V0
QXN5bmNSZXBseShjb25zdCBjaGFyIG1ldGhvZFtdLCBjb25zdCBRTGlzdDxRVmFyaWFudD4mIGFy
ZywgUURCdXNJbnRlcmZhY2UqIG1hZCk7CiAKKyAgICBRUXVldWU8QmFja2VuZE1lc3NhZ2U+IG1l
c3NhZ2VRdWV1ZTsKKyAgICBRTXV0ZXggbWVzc2FnZVF1ZXVlTG9jazsKKyAgICBRV2FpdENvbmRp
dGlvbiBtZXNzYWdlUXVldWVOb3RpZmllcjsKKwogICBRTWFwPFFTdHJpbmcsTVByaXNBcHBkYXRh
Kj4gYXBwczsKICAgUVN0cmluZyBfaWQ7CiB9OwogCitjbGFzcyBNaXhlcl9NUFJJUzJfVGhyZWFk
IDogcHVibGljIFFUaHJlYWQKK3sKKwlRX09CSkVDVAorcHVibGljOgorCU1peGVyX01QUklTMl9U
aHJlYWQoTWl4ZXJfTVBSSVMyKiBiYWNrZW5kQXJnKQorCXsKKwkJYmFja2VuZCA9IGJhY2tlbmRB
cmc7CisJfTsKKworc2lnbmFsczoKKwl2b2lkIHBsdWdnZWQoUVN0cmluZyBzdHJlYW0pOworCitw
cml2YXRlOgorCU1peGVyX01QUklTMiogYmFja2VuZDsKKwl2b2lkIHJ1bigpOworCXZvaWQgbWVz
c2FnZVF1ZXVlVGhyZWFkTG9vcCgpOworCit9OworCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvY29y
ZS9HbG9iYWxDb25maWcuaCBiL2NvcmUvR2xvYmFsQ29uZmlnLmgKaW5kZXggMTZiNGQ3Ny4uNGIz
YWIzZCAxMDA2NDQKLS0tIGEvY29yZS9HbG9iYWxDb25maWcuaAorKysgYi9jb3JlL0dsb2JhbENv
bmZpZy5oCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSA8UXQ+CiAjaW5jbHVkZSA8UVNldD4K
IAorc3RhdGljIGJvb2wgYXBwU2h1dGRvd24gPSBmYWxzZTsKKwogY2xhc3MgR2xvYmFsQ29uZmln
CiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9jb3JlL21peGRldmljZS5jcHAgYi9jb3JlL21peGRl
dmljZS5jcHAKaW5kZXggMDZiODgzZS4uYTZjMTZjOCAxMDA2NDQKLS0tIGEvY29yZS9taXhkZXZp
Y2UuY3BwCisrKyBiL2NvcmUvbWl4ZGV2aWNlLmNwcApAQCAtODAsMTIgKzgwLDE2IEBAIHN0YXRp
YyBjb25zdCBRU3RyaW5nIGNoYW5uZWxUeXBlVG9JY29uTmFtZSggTWl4RGV2aWNlOjpDaGFubmVs
VHlwZSB0eXBlICkKICAgICAgICAgICAgIHJldHVybiAibWl4ZXItbWljcm9waG9uZS1mcm9udCI7
CiAgICAgICAgIGNhc2UgTWl4RGV2aWNlOjpLTUlYX0NPTVBPU0lURToKICAgICAgICAgICAgIHJl
dHVybiAibWl4ZXItbGluZSI7CisKICAgICAgICAgY2FzZSBNaXhEZXZpY2U6OkFQUExJQ0FUSU9O
X0FNQVJPSzoKICAgICAgICAgICAgIHJldHVybiAiYW1hcm9rIjsKICAgICAgICAgY2FzZSBNaXhE
ZXZpY2U6OkFQUExJQ0FUSU9OX0JBTlNIRUU6CiAgICAgICAgICAgICByZXR1cm4gIm1lZGlhLXBs
YXllci1iYW5zaGVlIjsKICAgICAgICAgY2FzZSBNaXhEZXZpY2U6OkFQUExJQ0FUSU9OX1hNTTI6
CiAgICAgICAgICAgICByZXR1cm4gInhtbXMiOworICAgICAgICBjYXNlIE1peERldmljZTo6QVBQ
TElDQVRJT05fVE9NQUhBV0s6CisgICAgICAgIAlyZXR1cm4gInRvbWFoYXdrIjsKKwogICAgICAg
ICBjYXNlIE1peERldmljZTo6QVBQTElDQVRJT05fU1RSRUFNOgogICAgICAgICAgICAgcmV0dXJu
ICJtaXhlci1wY20iOwogCmRpZmYgLS1naXQgYS9jb3JlL21peGRldmljZS5oIGIvY29yZS9taXhk
ZXZpY2UuaAppbmRleCAxNzdjM2IyLi5hNTljOWI5IDEwMDY0NAotLS0gYS9jb3JlL21peGRldmlj
ZS5oCisrKyBiL2NvcmUvbWl4ZGV2aWNlLmgKQEAgLTg4LDcgKzg4LDggQEAgcHVibGljOgogCQkg
ICAgICAgLy8gU29tZSBzcGVjaWZpYyBhcHBsaWNhdGlvbnMKIAkJICAgICAgIEFQUExJQ0FUSU9O
X0FNQVJPSywKIAkJICAgICAgIEFQUExJQ0FUSU9OX0JBTlNIRUUsCi0JCSAgICAgICBBUFBMSUNB
VElPTl9YTU0yCisJCSAgICAgICBBUFBMSUNBVElPTl9YTU0yLAorCQkgICAgICAgQVBQTElDQVRJ
T05fVE9NQUhBV0sKICAgICAgICAgICAgICAgICAgICAgIH07CiAKICAgIGVudW0gU3dpdGNoVHlw
ZSB7IE9uT2ZmLCBNdXRlLCBDYXB0dXJlLCBBY3RpdmF0b3IgfTsKZGlmZiAtLWdpdCBhL2NvcmUv
bWl4ZXJ0b29sYm94LmNwcCBiL2NvcmUvbWl4ZXJ0b29sYm94LmNwcAppbmRleCA0ODFlMGYzLi5j
MjgyZDMxIDEwMDY0NAotLS0gYS9jb3JlL21peGVydG9vbGJveC5jcHAKKysrIGIvY29yZS9taXhl
cnRvb2xib3guY3BwCkBAIC0zNzUsNiArMzc1LDcgQEAgdm9pZCBNaXhlclRvb2xCb3g6OnJlbW92
ZU1peGVyKE1peGVyICpwYXJfbWl4ZXIpCiB2b2lkIE1peGVyVG9vbEJveDo6ZGVpbml0TWl4ZXIo
KQogewogICAgLy9rRGVidWcoNjcxMDApIDw8ICJJTiBNaXhlclRvb2xCb3g6OmRlaW5pdE1peGVy
KCkiOworCWFwcFNodXRkb3duID0gdHJ1ZTsKIAogICAgaW50IG1peGVyQ291bnQgPSBNaXhlcjo6
bWl4ZXJzKCkuY291bnQoKTsKICAgIGZvciAoIGludCBpPTA7IGk8bWl4ZXJDb3VudDsgKytpKQpk
aWZmIC0tZ2l0IGEvY29yZS9taXhlcnRvb2xib3guaCBiL2NvcmUvbWl4ZXJ0b29sYm94LmgKaW5k
ZXggMmUzOTZkMC4uYzZjZTVhOCAxMDA2NDQKLS0tIGEvY29yZS9taXhlcnRvb2xib3guaAorKysg
Yi9jb3JlL21peGVydG9vbGJveC5oCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSA8UVJlZ0V4
cD4KICNpbmNsdWRlIDxRU3RyaW5nPgogCi0vLyNpbmNsdWRlIDxLTG9jYWxlPgorLy8gZ2xvYmFs
Y29uZmlnIG9ubHkgZm9yIHRoZSBhcHBTaHV0ZG93bgorI2luY2x1ZGUgIkdsb2JhbENvbmZpZy5o
IgogY2xhc3MgTWl4ZXI7CiAKIC8qKgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>