Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcd43b4e authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "Bugfix: reboot needed for dock audio checkbox 1/2" into ics

parents 495eda91 0b9dd049
Loading
Loading
Loading
Loading
+38 −15
Original line number Diff line number Diff line
@@ -66,6 +66,8 @@ class WiredAccessoryObserver extends UEventObserver {
                                                   BIT_HDMI_AUDIO);
    private static final int HEADSETS_WITH_MIC = BIT_HEADSET;

    public static final String DOCK_AUDIO_SETTING_CHANGED = "DOCK_AUDIO_SETTING_CHANGED";

    private int mHeadsetState;
    private int mPrevHeadsetState;
    private String mHeadsetName;
@@ -80,13 +82,20 @@ class WiredAccessoryObserver extends UEventObserver {
        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WiredAccessoryObserver");
        mWakeLock.setReferenceCounted(false);

        final IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BOOT_COMPLETED);
        filter.addAction(DOCK_AUDIO_SETTING_CHANGED);

        context.registerReceiver(new BootCompletedReceiver(),
            new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, null);
            filter, null, null);
    }

    private final class BootCompletedReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();
        if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {

            // At any given time accessories could be inserted
            // one on the board, one on the dock and one on HDMI:
            // observe three UEVENTs
@@ -103,6 +112,20 @@ class WiredAccessoryObserver extends UEventObserver {
                    startObserving(uEventInfoDock[i][0]);
                }
            }
        } else  if (DOCK_AUDIO_SETTING_CHANGED.equals(action)) {
             // DOCK CHANGED
              if (Settings.System.getInt(context.getContentResolver(),
                    Settings.System.DOCK_USB_AUDIO_ENABLED, 0) == 1) {
                  for (int i = 0; i < MAX_AUDIO_PORTS_DOCK; i++) {
                      startObserving(uEventInfoDock[i][0]);
                  }
              } else {
                  stopObserving();
                  for (int i = 0; i < MAX_AUDIO_PORTS; i++) {
                      startObserving(uEventInfo[i][0]);
                  }
              }
          }
      }
  }