mozilla-pipewire-0-3.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 24 Jan 2021 11:01:55 +0100
branchfirefox84
changeset 1153 fdd746757dda
parent 1152 4cfe46c9a944
permissions -rw-r--r--
minor updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     1
diff -up firefox-83.0/browser/actors/WebRTCParent.jsm.pw6 firefox-83.0/browser/actors/WebRTCParent.jsm
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     2
--- firefox-83.0/browser/actors/WebRTCParent.jsm.pw6	2020-11-12 19:04:30.000000000 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     3
+++ firefox-83.0/browser/actors/WebRTCParent.jsm	2020-11-25 10:28:32.492865982 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     4
@@ -45,6 +45,9 @@ XPCOMUtils.defineLazyServiceGetter(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     5
   "nsIOSPermissionRequest"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     6
 );
1140
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
     7
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     8
+const PIPEWIRE_PORTAL_NAME = "####_PIPEWIRE_PORTAL_####";
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
     9
+const PIPEWIRE_ID = 0xaffffff;
1134
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
+
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    11
 class WebRTCParent extends JSWindowActorParent {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    12
   didDestroy() {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    13
     webrtcUI.forgetStreamsFromBrowserContext(this.browsingContext);
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    14
@@ -753,6 +756,8 @@ function prompt(aActor, aBrowser, aReque
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    15
         );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    16
         menupopup.appendChild(doc.createXULElement("menuseparator"));
1134
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    18
+        let isPipeWire = false;
1134
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
+
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    20
         // Build the list of 'devices'.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    21
         let monitorIndex = 1;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    22
         for (let i = 0; i < devices.length; ++i) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    23
@@ -774,6 +779,29 @@ function prompt(aActor, aBrowser, aReque
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    24
             }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    25
           } else {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    26
             name = device.name;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    27
+            // When we share content by PipeWire add only one item to the device
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    28
+            // list. When it's selected PipeWire portal dialog is opened and
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    29
+            // user confirms actual window/screen sharing there.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    30
+            // Don't mark it as scary as there's an extra confirmation step by
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    31
+            // PipeWire portal dialog.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    32
+            if (name == PIPEWIRE_PORTAL_NAME && device.id == PIPEWIRE_ID) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    33
+              isPipeWire = true;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    34
+              let name;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    35
+              try {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    36
+                name = stringBundle.getString("getUserMedia.sharePipeWirePortal.label");
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    37
+              } catch (err) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    38
+                name = "Use operating system settings"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    39
+              }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    40
+              let item = addDeviceToList(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    41
+                menupopup,
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    42
+                name,
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    43
+                i,
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    44
+                type
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    45
+              );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    46
+              item.deviceId = device.id;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    47
+              item.mediaSource = type;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    48
+              break;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    49
+            }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    50
             if (type == "application") {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    51
               // The application names returned by the platform are of the form:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    52
               // <window count>\x1e<application name>
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    53
@@ -888,39 +916,41 @@ function prompt(aActor, aBrowser, aReque
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    54
             perms.EXPIRE_SESSION
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    55
           );
1134
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    57
-          video.deviceId = deviceId;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    58
-          let constraints = {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    59
-            video: { mediaSource: type, deviceId: { exact: deviceId } },
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    60
-          };
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    61
-          chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    62
-            stream => {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    63
-              if (video.deviceId != deviceId) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    64
-                // The user has selected a different device or closed the panel
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    65
-                // before getUserMedia finished.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    66
-                stream.getTracks().forEach(t => t.stop());
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    67
-                return;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    68
-              }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    69
-              video.srcObject = stream;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    70
-              video.stream = stream;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    71
-              doc.getElementById("webRTC-preview").hidden = false;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    72
-              video.onloadedmetadata = function(e) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    73
-                video.play();
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    74
-              };
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    75
-            },
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    76
-            err => {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    77
-              if (
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    78
-                err.name == "OverconstrainedError" &&
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    79
-                err.constraint == "deviceId"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    80
-              ) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    81
-                // Window has disappeared since enumeration, which can happen.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    82
-                // No preview for you.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    83
-                return;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    84
+          if (!isPipeWire) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    85
+            video.deviceId = deviceId;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    86
+            let constraints = {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    87
+              video: { mediaSource: type, deviceId: { exact: deviceId } },
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    88
+            };
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    89
+            chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    90
+              stream => {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    91
+                if (video.deviceId != deviceId) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    92
+                  // The user has selected a different device or closed the panel
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    93
+                  // before getUserMedia finished.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    94
+                  stream.getTracks().forEach(t => t.stop());
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    95
+                  return;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    96
+                }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    97
+                video.srcObject = stream;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    98
+                video.stream = stream;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
    99
+                doc.getElementById("webRTC-preview").hidden = false;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   100
+                video.onloadedmetadata = function(e) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   101
+                  video.play();
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   102
+                };
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   103
+              },
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   104
+              err => {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   105
+                if (
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   106
+                  err.name == "OverconstrainedError" &&
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   107
+                  err.constraint == "deviceId"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   108
+                ) {
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   109
+                  // Window has disappeared since enumeration, which can happen.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   110
+                  // No preview for you.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   111
+                  return;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   112
+                }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   113
+                Cu.reportError(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   114
+                  `error in preview: ${err.message} ${err.constraint}`
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   115
+                );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   116
               }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   117
-              Cu.reportError(
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   118
-                `error in preview: ${err.message} ${err.constraint}`
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   119
-              );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   120
-            }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   121
-          );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   122
+            );
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   123
+          }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   124
         };
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   125
         menupopup.addEventListener("command", menupopup._commandEventListener);
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   126
       }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   127
diff -up firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties.pw6 firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   128
--- firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties.pw6	2020-11-12 19:04:30.000000000 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   129
+++ firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties	2020-11-25 09:24:26.378857626 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   130
@@ -764,6 +764,7 @@ getUserMedia.selectWindowOrScreen.label=
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   131
 getUserMedia.selectWindowOrScreen.accesskey=W
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   132
 getUserMedia.pickWindowOrScreen.label = Select Window or Screen
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   133
 getUserMedia.shareEntireScreen.label = Entire screen
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   134
+getUserMedia.sharePipeWirePortal.label = Use operating system settings
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   135
 # LOCALIZATION NOTE (getUserMedia.shareMonitor.label):
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   136
 # %S is screen number (digits 1, 2, etc)
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   137
 # Example: Screen 1, Screen 2,..
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   138
diff -up firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.pw6 firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   139
--- firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.pw6	2020-11-25 09:24:26.358857788 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   140
+++ firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc	2020-11-25 09:24:26.378857626 +0100
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   141
@@ -879,17 +879,17 @@ void BaseCapturerPipeWire::CaptureFrame(
1140
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   142
   callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   143
 }
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   144
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   145
+#define PIPEWIRE_ID   0xaffffff
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   146
+#define PIPEWIRE_NAME "####_PIPEWIRE_PORTAL_####"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   147
+
1140
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   148
 bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   149
-  RTC_DCHECK(sources->size() == 0);
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   150
-  // List of available screens is already presented by the xdg-desktop-portal.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   151
-  // But we have to add an empty source as the code expects it.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   152
-  sources->push_back({0});
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   153
+  sources->push_back({PIPEWIRE_ID, 0, PIPEWIRE_NAME});
1140
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   154
   return true;
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   155
 }
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   156
 
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   157
 bool BaseCapturerPipeWire::SelectSource(SourceId id) {
a9aa543a508a FF79 latest
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1134
diff changeset
   158
   // Screen selection is handled by the xdg-desktop-portal.
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   159
-  return true;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1151
diff changeset
   160
+  return id == PIPEWIRE_ID;
1134
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   161
 }
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   162
 
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   163
 // static