Advertisement
Guest User

gvc init #2

a guest
Jan 2nd, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let MixerControl = null;
  2. let isConnected = false;
  3.  
  4. const MixerAudio = new Lang.Class({
  5.     Name: 'MixerAudio',
  6.  
  7.     _init: function () {
  8.         Lib.TalkativeLog('mixer _init');
  9.  
  10.         MixerControl = this._getMixerControl();
  11.  
  12.         if (MixerControl) {
  13.             isConnected = true;
  14.             MixerControl.connect("state-changed", Lang.bind(this, this._onChangeStatePAC));
  15.         } else {
  16.             Lib.TalkativeLog('Error lib pulse NOT present or NOT respond');
  17.         }
  18.     },
  19.  
  20.     _getMixerControl: function () {
  21.         var _mixerTmp;
  22.         if (MixerControl) {
  23.             Lib.TalkativeLog('mixer exist -> ' + MixerControl +
  24.                 ' state -> ' + MixerControl.get_state());
  25.  
  26.             return MixerControl;
  27.         } else {
  28.             Lib.TalkativeLog('mixer create');
  29.  
  30.             _mixerTmp = new Gvc.MixerControl({
  31.                 name: 'ESC Mixer Control'
  32.             });
  33.             _mixerTmp.open();
  34.  
  35.             return _mixerTmp;
  36.         }
  37.     },
  38.  
  39.     _onChangeStatePAC: function () {
  40.         Lib.TalkativeLog('mixer state changed');
  41.  
  42.         switch (MixerControl.get_state()) {
  43.         case Gvc.MixerControlState.CLOSED:
  44.             Lib.TalkativeLog('mixer close');
  45.  
  46.             isConnected = false;
  47.             break;
  48.         case Gvc.MixerControlState.CONNECTING:
  49.             Lib.TalkativeLog('mixer connecting');
  50.             isConnected = false;
  51.             break;
  52.         case Gvc.MixerControlState.FAILED:
  53.             Lib.TalkativeLog('mixer failed');
  54.  
  55.             isConnected = false;
  56.             break;
  57.         case Gvc.MixerControlState.READY:
  58.             Lib.TalkativeLog('mixer ready');
  59.  
  60.             isConnected = true;
  61.  
  62.             var tmp = MixerControl.get_cards();
  63.             Lib.TalkativeLog('mixer cards -> ' + tmp.length);
  64.             for (let x in tmp) {
  65.                 Lib.TalkativeLog('_card index: ' + tmp[x].index);
  66.                 Lib.TalkativeLog('_card name: ' + tmp[x].name);
  67.                 Lib.TalkativeLog('_card icon: ' + tmp[x].icon_name);
  68.                 Lib.TalkativeLog('_card profile: ' + tmp[x].profile);
  69.                 Lib.TalkativeLog('_card human profile: ' + tmp[x].human_profile);
  70.             }
  71.  
  72.             tmp = MixerControl.get_sources();
  73.             Lib.TalkativeLog('mixer sources -> ' + tmp.length);
  74.             for (let x in tmp) {
  75.                 Lib.TalkativeLog('_source index: ' + tmp[x].index);
  76.                 Lib.TalkativeLog('_source name: ' + tmp[x].name);
  77.                 Lib.TalkativeLog('_source icon: ' + tmp[x].icon_name);
  78.                 Lib.TalkativeLog('_source description: ' + tmp[x].description);
  79.             }
  80.  
  81.             tmp = MixerControl.get_source_outputs();
  82.             Lib.TalkativeLog('mixer source output -> ' + tmp.length);
  83.             for (let x in tmp) {
  84.                 Lib.TalkativeLog('_sourceouput index: ' + tmp[x].index);
  85.                 Lib.TalkativeLog('_sourceouput name: ' + tmp[x].name);
  86.                 Lib.TalkativeLog('_sourceoutput icon: ' + tmp[x].icon_name);
  87.                 Lib.TalkativeLog('_sourceoutput description: ' + tmp[x].description);
  88.             }
  89.  
  90.             tmp = MixerControl.get_sink_inputs();
  91.             Lib.TalkativeLog('mixer sink input -> ' + tmp.length);
  92.             for (let x in tmp) {
  93.                 Lib.TalkativeLog('_sink index: ' + tmp[x].index);
  94.                 Lib.TalkativeLog('_sink name: ' + tmp[x].name);
  95.                 Lib.TalkativeLog('_sink icon: ' + tmp[x].icon_name);
  96.                 Lib.TalkativeLog('_sink description: ' + tmp[x].description);
  97.             }
  98.  
  99.             tmp = MixerControl.get_streams();
  100.             Lib.TalkativeLog('mixer stream -> ' + tmp.length);
  101.             for (let x in tmp) {
  102.                 Lib.TalkativeLog('_stream index: ' + tmp[x].index);
  103.                 Lib.TalkativeLog('_stream name: ' + tmp[x].name);
  104.                 Lib.TalkativeLog('_stream icon: ' + tmp[x].icon_name);
  105.                 Lib.TalkativeLog('_stream description: ' + tmp[x].description);;
  106.             }
  107.  
  108.             break;
  109.         default:
  110.             Lib.TalkativeLog('mixer UNK');
  111.  
  112.             isConnected = false;
  113.             break;
  114.         }
  115.     },
  116.  
  117.     checkPulseAudio: function () {
  118.         Lib.TalkativeLog('check pulseaudio lib presence: ' + isConnected);
  119.  
  120.         return isConnected;
  121.     },
  122.  
  123.     destroy: function () {
  124.         this.destroy();
  125.     }
  126. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement