Ravenports generated: 11 Apr 2019 12:57
[ravenports.git] / bucket_AC / firefox
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               firefox
4 VERSION=                66.0.3
5 KEYWORDS=               www
6 VARIANTS=               standard
7 SDESC[standard]=        Mozilla web browser
8 HOMEPAGE=               https://www.mozilla.org/en-US/firefox/
9 CONTACT=                Leonid_Bobrov[mazocomp@disroot.org]
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            MOZILLA/firefox/releases/66.0.3/source
13 DISTFILE[1]=            firefox-66.0.3.source.tar.xz:main
14 DF_INDEX=               1
15 SPKGS[standard]=        single
16
17 OPTIONS_AVAILABLE=      none
18 OPTIONS_STANDARD=       none
19
20 BUILD_DEPENDS=          autoconf213:single:standard
21                         bzip2:static:standard
22                         cbindgen:single:standard
23                         nodejs:primary:standard
24                         python-sqlite3:single:py27
25                         rust:single:standard
26                         yasm:single:standard
27                         zip:single:standard
28                         clang:compiler:standard
29 BUILDRUN_DEPENDS=       bzip2:shared:standard
30                         dbus-glib:primary:standard
31                         ffmpeg:primary:standard
32                         harfbuzz:primary:standard
33                         icu:single:standard
34                         libcanberra:primary:standard
35                         libevent:single:standard
36                         libffi:single:standard
37                         libnotify:primary:standard
38                         libproxy:single:standard
39                         nss:primary:standard
40                         sqlite:single:standard
41                         startup-notification:single:standard
42
43 USES=                   cpe desktop-utils:single gmake jpeg perl:build
44                         pkgconfig png python:py27 zlib
45 GNOME_COMPONENTS=       gconf gdkpixbuf gtk2 gtk3
46 XORG_COMPONENTS=        pixman xcb
47
48 LICENSE=                MPL:single
49 LICENSE_TERMS=          single:{{WRKSRC}}/toolkit/content/license.html
50 LICENSE_FILE=           MPL:stock
51 LICENSE_SCHEME=         solo
52
53 CPE_VENDOR=             mozilla
54 FPC_EQUIVALENT=         www/firefox
55
56 MUST_CONFIGURE=         yes
57 CONFIGURE_OUTSOURCE=    yes
58
59 SUB_FILES=              pkg-install-single
60                         pkg-deinstall-single
61 SUB_LIST=               MOZILLA=firefox
62                         MOZILLA_BIN=firefox-bin
63                         MOZILLA_NAME=Firefox
64                         MOZDIR={{PREFIX}}/lib/firefox
65
66 QMAKE_ARGS=             --enable-application=browser
67                         --enable-chrome-format=omni
68                         --enable-default-toolkit=cairo-gtk3
69                         --enable-gconf
70                         --enable-install-strip
71                         --enable-official-branding
72                         --enable-optimize
73                         --enable-release
74                         --enable-startup-notification
75                         --enable-strip
76                         --enable-libproxy
77                         --enable-system-ffi
78                         --enable-system-pixman
79                         --enable-system-sqlite
80                         --disable-alsa
81                         --disable-debug
82                         --disable-debug-symbols
83                         --disable-dtrace
84                         --disable-jack
85                         --disable-profiling
86                         --disable-pulseaudio
87                         --disable-tests
88                         --disable-updater
89                         --disable-webrtc
90                         --disable-hardening
91                         --prefix="{{PREFIX}}"
92                         --with-intl-api
93                         --with-system-bz2
94                         --with-system-graphite2
95                         --with-system-harfbuzz
96                         --with-system-icu
97                         --with-system-jpeg="{{LOCALBASE}}"
98                         --with-system-libevent
99                         --with-system-nspr
100                         --with-system-nss
101                         --with-system-png="{{LOCALBASE}}"
102                         --with-system-zlib
103 VAR_OPSYS[freebsd]=     CONFIGURE_ARGS=--enable-jemalloc
104 VAR_OPSYS[linux]=       QMAKE_ARGS=--disable-elf-hack
105
106 post-patch:
107         ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
108                 ${WRKSRC}/browser/app/nsBrowserApp.cpp
109         ${REINPLACE_CMD} -e 's/%u/%U/' -e '/X-MultipleArgs/d' \
110                 -e '/^Icon/s/=.*/=firefox/' \
111                 ${WRKSRC}/taskcluster/docker/firefox-snap/firefox.desktop
112         (cd ${WRKSRC}/gfx/angle/checkout/src/compiler/translator && \
113                 ${REINPLACE_CMD} -e 's|<math.h>|<cmath>|' \
114                 InfoSink.h IntermNode.cpp)
115         # disable SCTP
116         ${REINPLACE_CMD} -e 's|MOZ_SCTP|MOZ_DISABLE_SCTP|' \
117                 ${WRKSRC}/netwerk/moz.build
118         # Set mozilla options
119         @${ECHO_CMD} "--=> Setting configuration <=--"
120         @for arg in ${QMAKE_ARGS}; do \
121                 ${ECHO_CMD} ".mozconfig <<  $$arg" ;\
122                 ${ECHO_CMD} ac_add_options $$arg >> ${WRKSRC}/.mozconfig ;\
123         done
124         @${ECHO_CMD} LDFLAGS=\"-Wl,-rpath,${PREFIX}/lib/firefox\" \
125                 >> ${WRKSRC}/.mozconfig
126
127 post-install:
128         @${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps \
129                 ${STAGEDIR}${PREFIX}/share/applications
130         ${INSTALL_DATA} ${WRKSRC}/taskcluster/docker/firefox-snap/firefox.desktop \
131                 ${STAGEDIR}${PREFIX}/share/applications/
132         ${LN} -sf ${PREFIX}/lib/firefox/browser/chrome/icons/default/default48.png \
133                 ${STAGEDIR}${PREFIX}/share/pixmaps/firefox.png
134
135 pre-configure:
136         (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13)
137         (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13)
138
139 [FILE:527:descriptions/desc.single]
140 Firefox is a full-featured standard-compliant web browser, built on the
141 Mozilla codebase by thousands of contributors around the world.
142 It is extensible through thousands of user-contributed extensions, and
143 features:
144  * Improved Security;
145  * Improved Tabbed Browsing, with tab grouping;
146  * Private Browsing;
147  * Spell Checking;
148  * Search Suggestions;
149  * Session Restore;
150  * Web Feeds (RSS);
151  * Live Titles;
152  * Integrated Search;
153  * Live Bookmarks;
154  * Pop-up Blocker;
155  * Phishing Protection;
156  * Themes;
157  * Search Engine Manager.
158
159
160 [FILE:107:distinfo]
161 1fe4cfe4f4afce8d5532da8f36a48c333750c90a6ee67167309357edf514c22a    281164936 firefox-66.0.3.source.tar.xz
162
163
164 [FILE:1003:manifests/plist.single]
165 %%ONLY-LINUX%%lib/firefox/
166  Throbber-small.gif
167  crashreporter
168  crashreporter.ini
169  libmozsandbox.so
170  minidump-analyzer
171 %%ONLY-LINUX%%lib/firefox/browser/crashreporter-override.ini
172 %%ONLY-LINUX%%lib/firefox/fonts/EmojiOneMozilla.ttf
173 bin/firefox
174 lib/firefox/
175  application.ini
176  chrome.manifest
177  dependentlibs.list
178  firefox
179  firefox-bin
180  liblgpllibs.so
181  libmozavcodec.so
182  libmozavutil.so
183  libmozgtk.so
184  libxul.so
185  omni.ja
186  pingsender
187  platform.ini
188  plugin-container
189  removed-files
190 lib/firefox/browser/
191  blocklist.xml
192  chrome.manifest
193  omni.ja
194 lib/firefox/browser/chrome/icons/default/
195  default128.png
196  default16.png
197  default32.png
198  default48.png
199  default64.png
200 lib/firefox/browser/features/
201  formautofill@mozilla.org.xpi
202  screenshots@mozilla.org.xpi
203  webcompat-reporter@mozilla.org.xpi
204  webcompat@mozilla.org.xpi
205 lib/firefox/defaults/pref/channel-prefs.js
206 lib/firefox/gmp-clearkey/0.1/
207  libclearkey.so
208  manifest.json
209 lib/firefox/gtk2/libmozgtk.so
210 share/applications/firefox.desktop
211 share/pixmaps/firefox.png
212
213
214 [FILE:4614:patches/patch-addon-search]
215 https://github.com/mozilla/addons/issues/708
216 https://github.com/mozilla/addons-frontend/issues/4610
217
218 diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js
219 index 75c2c5e435e35..4d8c09c02759b 100644
220 --- browser/app/profile/firefox.js.orig 2019-03-26 21:19:42 UTC
221 +++ browser/app/profile/firefox.js
222 @@ -40,8 +40,8 @@ pref("extensions.webextOptionalPermissio
223  pref("extensions.getAddons.cache.enabled", true);
224  pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%");
225  pref("extensions.getAddons.compatOverides.url", "https://services.addons.mozilla.org/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE%");
226 -pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%");
227 -pref("extensions.webservice.discoverURL", "https://discovery.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/%OS%/%COMPATIBILITY_MODE%");
228 +pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=Linux&appver=%VERSION%");
229 +pref("extensions.webservice.discoverURL", "https://discovery.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/Linux/%COMPATIBILITY_MODE%");
230  pref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/");
231  pref("extensions.getAddons.langpacks.url", "https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%");
232  
233 @@ -181,8 +181,8 @@ pref("app.update.service.enabled", true)
234  //  .. etc ..
235  //
236  pref("extensions.update.enabled", true);
237 -pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
238 -pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
239 +pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
240 +pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
241  pref("extensions.update.interval", 86400);  // Check for updates to Extensions and
242                                              // Themes every day
243  
244 --- toolkit/mozapps/extensions/internal/AddonRepository.jsm.orig        2019-03-26 21:19:52 UTC
245 +++ toolkit/mozapps/extensions/internal/AddonRepository.jsm
246 @@ -610,7 +610,7 @@ var AddonRepository = {
247        addon.version = String(aEntry.current_version.version);
248        if (Array.isArray(aEntry.current_version.files)) {
249          for (let file of aEntry.current_version.files) {
250 -          if (file.platform == "all" || file.platform == PLATFORM) {
251 +          if (file.platform == "all" || file.platform == "linux" || file.platform == PLATFORM) {
252              if (file.url) {
253                addon.sourceURI = NetUtil.newURI(file.url);
254              }
255 --- toolkit/mozapps/extensions/internal/XPIDatabase.jsm.orig    2019-03-26 21:19:52 UTC
256 +++ toolkit/mozapps/extensions/internal/XPIDatabase.jsm
257 @@ -397,7 +397,7 @@ class AddonInternal {
258      // Something is causing errors in here
259      try {
260        for (let platform of this.targetPlatforms) {
261 -        if (platform.os == Services.appinfo.OS) {
262 +        if (platform.os == "Linux" || platform.os == Services.appinfo.OS) {
263            if (platform.abi) {
264              needsABI = true;
265              if (platform.abi === abi)
266
267
268 [FILE:423:patches/patch-browser-app-nsBrowserApp.cpp]
269 --- browser/app/nsBrowserApp.cpp.orig   2019-03-26 21:19:42 UTC
270 +++ browser/app/nsBrowserApp.cpp
271 @@ -275,6 +275,9 @@ int main(int argc, char* argv[], char* e
272    }
273  #endif
274  
275 +  setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
276 +  setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0);
277 +
278  #ifdef HAS_DLL_BLOCKLIST
279    DllBlocklist_Initialize(gBlocklistInitFlags);
280  #endif
281
282
283 [FILE:2829:patches/patch-bug1288587]
284 diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
285 index 855214a..1e91d51 100644
286 --- build/moz.configure/init.configure
287 +++ build/moz.configure/init.configure
288 @@ -165,16 +165,17 @@ option(env='PYTHON', nargs=1, help='Python interpreter')
289  # ==============================================================
290  @depends('PYTHON', check_build_environment, mozconfig, '--help')
291  @imports('os')
292  @imports('sys')
293  @imports('subprocess')
294  @imports(_from='mozbuild.configure.util', _import='LineIO')
295  @imports(_from='mozbuild.virtualenv', _import='VirtualenvManager')
296  @imports(_from='mozbuild.virtualenv', _import='verify_python_version')
297 +@imports(_from='__builtin__', _import='KeyError')
298  @imports('distutils.sysconfig')
299  def virtualenv_python(env_python, build_env, mozconfig, help):
300      if help:
301          return
302  
303      python = env_python[0] if env_python else None
304  
305      # Ideally we'd rely on the mozconfig injection from mozconfig_options,
306 @@ -184,16 +185,22 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
307          if 'PYTHON' in mozconfig['env']['added']:
308              python = mozconfig['env']['added']['PYTHON']
309          elif 'PYTHON' in mozconfig['env']['modified']:
310              python = mozconfig['env']['modified']['PYTHON'][1]
311          elif 'PYTHON' in mozconfig['vars']['added']:
312              python = mozconfig['vars']['added']['PYTHON']
313          elif 'PYTHON' in mozconfig['vars']['modified']:
314              python = mozconfig['vars']['modified']['PYTHON'][1]
315 +        for i in ('env', 'vars'):
316 +            for j in ('added', 'modified'):
317 +                try:
318 +                    del mozconfig[i][j]['PYTHON']
319 +                except KeyError:
320 +                    pass
321  
322      with LineIO(lambda l: log.error(l)) as out:
323          verify_python_version(out)
324      topsrcdir, topobjdir = build_env.topsrcdir, build_env.topobjdir
325      if topobjdir.endswith('/js/src'):
326          topobjdir = topobjdir[:-7]
327  
328      with LineIO(lambda l: log.info(l)) as out:
329 @@ -255,17 +262,20 @@ def virtualenv_python(env_python, build_env, mozconfig
330          log.info('Creating Python environment')
331          manager.build(python)
332  
333      python = normsep(manager.python_path)
334  
335      if not normsep(sys.executable).startswith(normsep(virtualenvs_root)):
336          log.info('Reexecuting in the virtualenv')
337          if env_python:
338 -            del os.environ['PYTHON']
339 +            try:
340 +                del os.environ['PYTHON']
341 +            except KeyError:
342 +                pass
343          # One would prefer to use os.execl, but that's completely borked on
344          # Windows.
345          sys.exit(subprocess.call([python] + sys.argv))
346  
347      # We are now in the virtualenv
348      if not distutils.sysconfig.get_python_lib():
349          die('Could not determine python site packages directory')
350  
351
352
353 [FILE:1349:patches/patch-bug1507655]
354 Revert bug 1497976 as close_fds on Python 2 is too slow
355
356 diff --git build/moz.configure/util.configure build/moz.configure/util.configure
357 index 25862fee7c32..3fc725a5124e 100644
358 --- build/moz.configure/util.configure.orig     2019-03-26 21:19:42 UTC
359 +++ build/moz.configure/util.configure
360 @@ -22,7 +22,6 @@ def configure_error(message):
361  
362  # A wrapper to obtain a process' output and return code.
363  # Returns a tuple (retcode, stdout, stderr).
364 -@imports('os')
365  @imports(_from='__builtin__', _import='unicode')
366  @imports('subprocess')
367  @imports(_from='mozbuild.shellutil', _import='quote')
368 @@ -45,13 +44,7 @@ def get_cmd_output(*args, **kwargs):
369  
370      log.debug('Executing: `%s`', quote(*args))
371      proc = subprocess.Popen(args, stdout=subprocess.PIPE,
372 -                            stderr=subprocess.PIPE,
373 -                            # On Python 2 on Windows, close_fds prevents the
374 -                            # process from inheriting stdout/stderr.
375 -                            # Elsewhere, it simply prevents it from inheriting
376 -                            # extra file descriptors, which is what we want.
377 -                            close_fds=os.name != 'nt',
378 -                            **kwargs)
379 +                            stderr=subprocess.PIPE, **kwargs)
380      stdout, stderr = proc.communicate()
381      return proc.wait(), stdout, stderr
382  
383
384
385 [FILE:20169:patches/patch-bug1514156]
386 commit 94f519f31849
387 Author: sotaro <sotaro.ikeda.g@gmail.com>
388 Date:   Tue Feb 12 16:32:51 2019 +0900
389
390     Bug 1514156 - Add GLContextEGL::CreateEGLSurfaceForCompositorWidget() for Wayland r=jgilbert
391     
392     When GDK_BACKEND is wayland, widget is not fully mapped during creating CompositorSession. During CompositorSession creation, GLContextProviderEGL::CreateForCompositorWidget() creates GLContextEGL, but we could not create valid EGLSurface. We could create valid EGLSurface when widget is fully mapped. CreateEGLSurfaceForCompositorWidget() is used for creating valid EGLSurface after widget is fully mapped.
393     
394     Differential Revision: https://phabricator.services.mozilla.com/D18654
395 ---
396  gfx/gl/GLContextEGL.h           |  4 ++++
397  gfx/gl/GLContextProviderEGL.cpp | 27 +++++++++++++++++++++++++++
398  2 files changed, 31 insertions(+)
399
400 diff --git gfx/gl/GLContextEGL.h gfx/gl/GLContextEGL.h
401 index 95d5e0c02e23..adb37e59a9f7 100644
402 --- gfx/gl/GLContextEGL.h
403 +++ gfx/gl/GLContextEGL.h
404 @@ -91,6 +91,10 @@ class GLContextEGL : public GLContext {
405        CreateContextFlags flags, const gfx::IntSize& size,
406        const SurfaceCaps& minCaps, nsACString* const out_FailureId);
407  
408 +#if defined(MOZ_WAYLAND)
409 +  static EGLSurface CreateEGLSurfaceForCompositorWidget(
410 +      widget::CompositorWidget* aCompositorWidget, bool aForceAccelerated);
411 +#endif
412   protected:
413    friend class GLContextProviderEGL;
414    friend class GLContextEGLFactory;
415 diff --git gfx/gl/GLContextProviderEGL.cpp gfx/gl/GLContextProviderEGL.cpp
416 index 774eb34a8e87..25aa779a7d64 100644
417 --- gfx/gl/GLContextProviderEGL.cpp
418 +++ gfx/gl/GLContextProviderEGL.cpp
419 @@ -295,6 +295,33 @@ already_AddRefed<GLContext> GLContextEGLFactory::Create(
420    return gl.forget();
421  }
422  
423 +#if defined(MOZ_WAYLAND)
424 +/* static */ EGLSurface GLContextEGL::CreateEGLSurfaceForCompositorWidget(
425 +    widget::CompositorWidget* aCompositorWidget, bool aForceAccelerated) {
426 +  nsCString discardFailureId;
427 +  if (!GLLibraryEGL::EnsureInitialized(false, &discardFailureId)) {
428 +    gfxCriticalNote << "Failed to load EGL library 6!";
429 +    return EGL_NO_SURFACE;
430 +  }
431 +
432 +  MOZ_ASSERT(aCompositorWidget);
433 +  EGLNativeWindowType window = GET_NATIVE_WINDOW_FROM_COMPOSITOR_WIDGET(aCompositorWidget);
434 +  if (!window) {
435 +    gfxCriticalNote << "window is null";
436 +    return EGL_NO_SURFACE;
437 +  }
438 +  const bool useWebRender = aCompositorWidget->GetCompositorOptions().UseWebRender();
439 +
440 +  EGLConfig config;
441 +  if (!CreateConfig(&config, useWebRender)) {
442 +    gfxCriticalNote << "Failed to create EGLConfig!";
443 +    return EGL_NO_SURFACE;
444 +  }
445 +
446 +  return mozilla::gl::CreateSurfaceFromNativeWindow(window, config);
447 +}
448 +#endif
449 +
450  GLContextEGL::GLContextEGL(CreateContextFlags flags, const SurfaceCaps& caps,
451                             bool isOffscreen, EGLConfig config,
452                             EGLSurface surface, EGLContext context)
453
454 commit 0e2cb6d4e88d
455 Author: sotaro <sotaro.ikeda.g@gmail.com>
456 Date:   Tue Feb 12 16:33:31 2019 +0900
457
458     Bug 1514156 - Add RenderCompositorEGL for wayland r=nical
459     
460     When GDK_BACKEND is wayland, widget is not fully mapped during creating CompositorSession. Needs to create valid EGLSurface after widget is fully mapped.
461     
462     Differential Revision: https://phabricator.services.mozilla.com/D18940
463 ---
464  gfx/webrender_bindings/RenderCompositor.cpp    |  12 +++
465  gfx/webrender_bindings/RenderCompositorEGL.cpp | 132 +++++++++++++++++++++++++
466  gfx/webrender_bindings/RenderCompositorEGL.h   |  54 ++++++++++
467  gfx/webrender_bindings/moz.build               |  10 ++
468  widget/gtk/CompositorWidgetChild.cpp           |   6 ++
469  widget/gtk/CompositorWidgetChild.h             |   4 +-
470  widget/gtk/CompositorWidgetParent.cpp          |   8 ++
471  widget/gtk/CompositorWidgetParent.h            |   2 +
472  widget/gtk/GtkCompositorWidget.cpp             |  12 +++
473  widget/gtk/GtkCompositorWidget.h               |  11 +++
474  widget/gtk/PCompositorWidget.ipdl              |   1 +
475  widget/gtk/mozcontainer.cpp                    |  11 +++
476  widget/gtk/mozcontainer.h                      |   2 +
477  widget/gtk/nsWindow.cpp                        |  16 +++
478  widget/gtk/nsWindow.h                          |   1 +
479  15 files changed, 281 insertions(+), 1 deletion(-)
480
481 diff --git gfx/webrender_bindings/RenderCompositor.cpp gfx/webrender_bindings/RenderCompositor.cpp
482 index 051482fbabbf..a58268096a89 100644
483 --- gfx/webrender_bindings/RenderCompositor.cpp
484 +++ gfx/webrender_bindings/RenderCompositor.cpp
485 @@ -16,6 +16,10 @@
486  #  include "mozilla/webrender/RenderCompositorANGLE.h"
487  #endif
488  
489 +#ifdef MOZ_WAYLAND
490 +#include "mozilla/webrender/RenderCompositorEGL.h"
491 +#endif
492 +
493  namespace mozilla {
494  namespace wr {
495  
496 @@ -26,6 +30,14 @@ namespace wr {
497      return RenderCompositorANGLE::Create(std::move(aWidget));
498    }
499  #endif
500 +
501 +#ifdef MOZ_WAYLAND
502 +  UniquePtr<RenderCompositor> eglCompositor = RenderCompositorEGL::Create(aWidget);
503 +  if (eglCompositor) {
504 +    return eglCompositor;
505 +  }
506 +#endif
507 +
508    return RenderCompositorOGL::Create(std::move(aWidget));
509  }
510  
511 diff --git gfx/webrender_bindings/RenderCompositorEGL.cpp gfx/webrender_bindings/RenderCompositorEGL.cpp
512 new file mode 100644
513 index 000000000000..16245f59afbd
514 --- /dev/null
515 +++ gfx/webrender_bindings/RenderCompositorEGL.cpp
516 @@ -0,0 +1,132 @@
517 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
518 +/* vim: set ts=8 sts=2 et sw=2 tw=80: */
519 +/* This Source Code Form is subject to the terms of the Mozilla Public
520 + * License, v. 2.0. If a copy of the MPL was not distributed with this
521 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
522 +
523 +#include "RenderCompositorEGL.h"
524 +
525 +#include "GLContext.h"
526 +#include "GLContextEGL.h"
527 +#include "GLContextProvider.h"
528 +#include "GLLibraryEGL.h"
529 +#include "mozilla/widget/CompositorWidget.h"
530 +#include "mozilla/widget/GtkCompositorWidget.h"
531 +
532 +#include <gdk/gdk.h>
533 +#include <gdk/gdkx.h>
534 +
535 +namespace mozilla {
536 +namespace wr {
537 +
538 +/* static */ UniquePtr<RenderCompositor> RenderCompositorEGL::Create(
539 +    RefPtr<widget::CompositorWidget> aWidget) {
540 +
541 +  if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
542 +    return nullptr;
543 +  }
544 +
545 +  RefPtr<gl::GLContext> gl;
546 +  gl = CreateGLContext(aWidget);
547 +  if (!gl) {
548 +    return nullptr;
549 +  }
550 +  return MakeUnique<RenderCompositorEGL>(gl, aWidget);
551 +}
552 +
553 +/* static */ already_AddRefed<gl::GLContext>
554 +RenderCompositorEGL::CreateGLContext(RefPtr<widget::CompositorWidget> aWidget) {
555 +  nsCString discardFailureId;
556 +
557 +  // Create GLContext with dummy EGLSurface.
558 +  RefPtr<gl::GLContext> gl =
559 +      //XXX headless context did not work.
560 +      gl::GLContextProviderEGL::CreateForCompositorWidget(aWidget, true);
561 +  if (!gl) {
562 +    gfxCriticalNote << "Failed GL context creation for WebRender: "
563 +                    << gfx::hexa(gl.get());
564 +    return nullptr;
565 +  }
566 +
567 +  if (!gl->MakeCurrent()) {
568 +    gfxCriticalNote << "Failed GL context creation for WebRender: "
569 +                    << gfx::hexa(gl.get());
570 +    return nullptr;
571 +  }
572 +
573 +  return gl.forget();
574 +}
575 +
576 +/* static */ EGLSurface RenderCompositorEGL::CreateEGLSurface(
577 +    widget::CompositorWidget* aWidget) {
578 +  EGLSurface surface = EGL_NO_SURFACE;
579 +  surface = gl::GLContextEGL::CreateEGLSurfaceForCompositorWidget(
580 +      aWidget, /* aForceAccelerated */ true);
581 +  if (surface == EGL_NO_SURFACE) {
582 +    gfxCriticalNote << "Failed to create EGLSurface";
583 +  }
584 +  return surface;
585 +}
586 +
587 +RenderCompositorEGL::RenderCompositorEGL(
588 +    RefPtr<gl::GLContext> aGL, RefPtr<widget::CompositorWidget> aWidget)
589 +    : RenderCompositor(std::move(aWidget)), mGL(aGL), mEGLSurface(EGL_NO_SURFACE) {
590 +  MOZ_ASSERT(mGL);
591 +}
592 +
593 +RenderCompositorEGL::~RenderCompositorEGL() {
594 +  DestroyEGLSurface();
595 +}
596 +
597 +bool RenderCompositorEGL::BeginFrame() {
598 +
599 +  if (mWidget->AsX11() && mWidget->AsX11()->WaylandRequestsUpdatingEGLSurface()) {
600 +    mEGLSurface = CreateEGLSurface(mWidget);
601 +    gl::GLContextEGL::Cast(gl())->SetEGLSurfaceOverride(mEGLSurface);
602 +  }
603 +
604 +  if (!mGL->MakeCurrent()) {
605 +    gfxCriticalNote << "Failed to make render context current, can't draw.";
606 +    return false;
607 +  }
608 +
609 +  return true;
610 +}
611 +
612 +void RenderCompositorEGL::EndFrame()
613 +{
614 +  if (mEGLSurface != EGL_NO_SURFACE) {
615 +    mGL->SwapBuffers();
616 +  }
617 +}
618 +
619 +void RenderCompositorEGL::WaitForGPU() {}
620 +
621 +void RenderCompositorEGL::Pause() {}
622 +
623 +bool RenderCompositorEGL::Resume() {
624 +  return true;
625 +}
626 +
627 +bool RenderCompositorEGL::MakeCurrent() {
628 +  gl::GLContextEGL::Cast(gl())->SetEGLSurfaceOverride(mEGLSurface);
629 +  return gl()->MakeCurrent();
630 +}
631 +
632 +void RenderCompositorEGL::DestroyEGLSurface() {
633 +  auto* egl = gl::GLLibraryEGL::Get();
634 +
635 +  // Release EGLSurface of back buffer before calling ResizeBuffers().
636 +  if (mEGLSurface) {
637 +    gl::GLContextEGL::Cast(gl())->SetEGLSurfaceOverride(EGL_NO_SURFACE);
638 +    egl->fDestroySurface(egl->Display(), mEGLSurface);
639 +    mEGLSurface = nullptr;
640 +  }
641 +}
642 +
643 +LayoutDeviceIntSize RenderCompositorEGL::GetBufferSize() {
644 +  return mWidget->GetClientSize();
645 +}
646 +
647 +}  // namespace wr
648 +}  // namespace mozilla
649 diff --git gfx/webrender_bindings/RenderCompositorEGL.h gfx/webrender_bindings/RenderCompositorEGL.h
650 new file mode 100644
651 index 000000000000..f12e16d974af
652 --- /dev/null
653 +++ gfx/webrender_bindings/RenderCompositorEGL.h
654 @@ -0,0 +1,54 @@
655 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
656 +/* vim: set ts=8 sts=2 et sw=2 tw=80: */
657 +/* This Source Code Form is subject to the terms of the Mozilla Public
658 + * License, v. 2.0. If a copy of the MPL was not distributed with this
659 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
660 +
661 +#ifndef MOZILLA_GFX_RENDERCOMPOSITOR_EGL_H
662 +#define MOZILLA_GFX_RENDERCOMPOSITOR_EGL_H
663 +
664 +#include "GLTypes.h"
665 +#include "mozilla/webrender/RenderCompositor.h"
666 +
667 +namespace mozilla {
668 +
669 +namespace wr {
670 +
671 +class RenderCompositorEGL : public RenderCompositor {
672 + public:
673 +  static UniquePtr<RenderCompositor> Create(
674 +      RefPtr<widget::CompositorWidget> aWidget);
675 +
676 +  RenderCompositorEGL(RefPtr<gl::GLContext> aGL,
677 +                      RefPtr<widget::CompositorWidget> aWidget);
678 +  virtual ~RenderCompositorEGL();
679 +
680 +  bool BeginFrame() override;
681 +  void EndFrame() override;
682 +  void WaitForGPU() override;
683 +  void Pause() override;
684 +  bool Resume() override;
685 +
686 +  gl::GLContext* gl() const override { return mGL; }
687 +
688 +  bool MakeCurrent() override;
689 +
690 +  bool UseANGLE() const override { return false; }
691 +
692 +  LayoutDeviceIntSize GetBufferSize() override;
693 +
694 + protected:
695 +   static already_AddRefed<gl::GLContext> CreateGLContext(
696 +      RefPtr<widget::CompositorWidget> aWidget);
697 +   static EGLSurface CreateEGLSurface(widget::CompositorWidget* aWidget);
698 +
699 +  void DestroyEGLSurface();
700 +
701 +  const RefPtr<gl::GLContext> mGL;
702 +  EGLSurface mEGLSurface;
703 +};
704 +
705 +}  // namespace wr
706 +}  // namespace mozilla
707 +
708 +#endif  // MOZILLA_GFX_RENDERCOMPOSITOR_EGL_H
709 diff --git gfx/webrender_bindings/moz.build gfx/webrender_bindings/moz.build
710 index 4acdfbb817d3..f632bc5d24d9 100644
711 --- gfx/webrender_bindings/moz.build
712 +++ gfx/webrender_bindings/moz.build
713 @@ -67,6 +67,14 @@ if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
714          'RenderCompositorANGLE.cpp',
715      ]
716  
717 +if CONFIG['MOZ_WAYLAND']:
718 +    EXPORTS.mozilla.webrender += [
719 +        'RenderCompositorEGL.h',
720 +    ]
721 +    SOURCES += [
722 +        'RenderCompositorEGL.cpp',
723 +    ]
724 +
725  if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk3'):
726      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
727      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
728 @@ -75,5 +83,7 @@ include('/ipc/chromium/chromium-config.mozbuild')
729  
730  FINAL_LIBRARY = 'xul'
731  
732 +CXXFLAGS += CONFIG['TK_CFLAGS']
733 +
734  if CONFIG['CC_TYPE'] == 'clang-cl':
735      AllowCompilerWarnings()  # workaround for bug 1090497
736 diff --git widget/gtk/CompositorWidgetChild.cpp widget/gtk/CompositorWidgetChild.cpp
737 index b746fec0a283..07847a298707 100644
738 --- widget/gtk/CompositorWidgetChild.cpp
739 +++ widget/gtk/CompositorWidgetChild.cpp
740 @@ -35,5 +35,11 @@ void CompositorWidgetChild::NotifyClientSizeChanged(
741    Unused << SendNotifyClientSizeChanged(aClientSize);
742  }
743  
744 +#ifdef MOZ_WAYLAND
745 +void CompositorWidgetChild::RequestsUpdatingEGLSurface() {
746 +  Unused << SendRequestsUpdatingEGLSurface();
747 +}
748 +#endif
749 +
750  }  // namespace widget
751  }  // namespace mozilla
752 diff --git widget/gtk/CompositorWidgetChild.h widget/gtk/CompositorWidgetChild.h
753 index fe3285eb6f22..0167dbb051c6 100644
754 --- widget/gtk/CompositorWidgetChild.h
755 +++ widget/gtk/CompositorWidgetChild.h
756 @@ -24,7 +24,9 @@ class CompositorWidgetChild final : public PCompositorWidgetChild,
757    mozilla::ipc::IPCResult RecvUnobserveVsync() override;
758  
759    void NotifyClientSizeChanged(const LayoutDeviceIntSize& aClientSize) override;
760 -
761 +#ifdef MOZ_WAYLAND
762 +  void RequestsUpdatingEGLSurface() override;
763 +#endif
764   private:
765    RefPtr<CompositorVsyncDispatcher> mVsyncDispatcher;
766    RefPtr<CompositorWidgetVsyncObserver> mVsyncObserver;
767 diff --git widget/gtk/CompositorWidgetParent.cpp widget/gtk/CompositorWidgetParent.cpp
768 index ae49ec9174bc..b4031883d3a8 100644
769 --- widget/gtk/CompositorWidgetParent.cpp
770 +++ widget/gtk/CompositorWidgetParent.cpp
771 @@ -40,5 +40,13 @@ mozilla::ipc::IPCResult CompositorWidgetParent::RecvNotifyClientSizeChanged(
772    return IPC_OK();
773  }
774  
775 +mozilla::ipc::IPCResult CompositorWidgetParent::RecvRequestsUpdatingEGLSurface()
776 +{
777 +#ifdef MOZ_WAYLAND
778 +  RequestsUpdatingEGLSurface();
779 +#endif
780 +  return IPC_OK();
781 +}
782 +
783  }  // namespace widget
784  }  // namespace mozilla
785 diff --git widget/gtk/CompositorWidgetParent.h widget/gtk/CompositorWidgetParent.h
786 index 5d0ccfcf50f2..8ddd58a8964f 100644
787 --- widget/gtk/CompositorWidgetParent.h
788 +++ widget/gtk/CompositorWidgetParent.h
789 @@ -27,6 +27,8 @@ class CompositorWidgetParent final : public PCompositorWidgetParent,
790    mozilla::ipc::IPCResult RecvNotifyClientSizeChanged(
791        const LayoutDeviceIntSize& aClientSize) override;
792  
793 +  mozilla::ipc::IPCResult RecvRequestsUpdatingEGLSurface() override;
794 +
795   private:
796    RefPtr<VsyncObserver> mVsyncObserver;
797  };
798 diff --git widget/gtk/GtkCompositorWidget.cpp widget/gtk/GtkCompositorWidget.cpp
799 index bc21d6c4d05e..f787e8c23797 100644
800 --- widget/gtk/GtkCompositorWidget.cpp
801 +++ widget/gtk/GtkCompositorWidget.cpp
802 @@ -85,6 +85,18 @@ void GtkCompositorWidget::NotifyClientSizeChanged(
803    mClientSize = aClientSize;
804  }
805  
806 +#ifdef MOZ_WAYLAND
807 +void GtkCompositorWidget::RequestsUpdatingEGLSurface() {
808 +  mWaylandRequestsUpdatingEGLSurface = true;
809 +}
810 +
811 +bool GtkCompositorWidget::WaylandRequestsUpdatingEGLSurface() {
812 +  bool ret = mWaylandRequestsUpdatingEGLSurface;
813 +  mWaylandRequestsUpdatingEGLSurface = false;
814 +  return ret;
815 +}
816 +#endif
817 +
818  LayoutDeviceIntSize GtkCompositorWidget::GetClientSize() { return mClientSize; }
819  
820  uintptr_t GtkCompositorWidget::GetWidgetKey() {
821 diff --git widget/gtk/GtkCompositorWidget.h widget/gtk/GtkCompositorWidget.h
822 index fd0c71426c18..75e156dffb02 100644
823 --- widget/gtk/GtkCompositorWidget.h
824 +++ widget/gtk/GtkCompositorWidget.h
825 @@ -20,6 +20,10 @@ class PlatformCompositorWidgetDelegate : public CompositorWidgetDelegate {
826    virtual void NotifyClientSizeChanged(
827        const LayoutDeviceIntSize& aClientSize) = 0;
828  
829 +#ifdef MOZ_WAYLAND
830 +  virtual void RequestsUpdatingEGLSurface() = 0;
831 +#endif
832 +
833    // CompositorWidgetDelegate Overrides
834  
835    PlatformCompositorWidgetDelegate* AsPlatformSpecificDelegate() override {
836 @@ -62,11 +66,18 @@ class GtkCompositorWidget : public CompositorWidget,
837  
838    void NotifyClientSizeChanged(const LayoutDeviceIntSize& aClientSize) override;
839  
840 +#ifdef MOZ_WAYLAND
841 +  void RequestsUpdatingEGLSurface() override;
842 +  bool WaylandRequestsUpdatingEGLSurface();
843 +#endif
844   protected:
845    nsWindow* mWidget;
846  
847   private:
848    LayoutDeviceIntSize mClientSize;
849 +#ifdef MOZ_WAYLAND
850 +  bool mWaylandRequestsUpdatingEGLSurface = false;
851 +#endif
852  
853    Display* mXDisplay;
854    Window mXWindow;
855 diff --git widget/gtk/PCompositorWidget.ipdl widget/gtk/PCompositorWidget.ipdl
856 index 178fe78e4dc2..51390e400649 100644
857 --- widget/gtk/PCompositorWidget.ipdl
858 +++ widget/gtk/PCompositorWidget.ipdl
859 @@ -19,6 +19,7 @@ parent:
860    async __delete__();
861  
862    async NotifyClientSizeChanged(LayoutDeviceIntSize aClientSize);
863 +  async RequestsUpdatingEGLSurface();
864  
865  child:
866  
867 diff --git widget/gtk/mozcontainer.cpp widget/gtk/mozcontainer.cpp
868 index 8be1f133d39f..8461e7b9d470 100644
869 --- widget/gtk/mozcontainer.cpp
870 +++ widget/gtk/mozcontainer.cpp
871 @@ -159,6 +159,7 @@ void moz_container_init(MozContainer *container) {
872    // We can draw to x11 window any time.
873    container->ready_to_draw = GDK_IS_X11_DISPLAY(gdk_display_get_default());
874    container->surface_needs_clear = true;
875 +  container->egl_surface_needs_update = false;
876  #endif
877  }
878  
879 @@ -176,6 +177,9 @@ static void frame_callback_handler(void *data, struct wl_callback *callback,
880                                     uint32_t time) {
881    MozContainer *container = MOZ_CONTAINER(data);
882    g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy);
883 +  if (!container->ready_to_draw) {
884 +    container->egl_surface_needs_update = true;
885 +  }
886    container->ready_to_draw = true;
887  }
888  
889 @@ -208,6 +212,7 @@ static void moz_container_unmap_wayland(MozContainer *container) {
890    g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy);
891  
892    container->surface_needs_clear = true;
893 +  container->egl_surface_needs_update = false;
894    container->ready_to_draw = false;
895  }
896  
897 @@ -555,6 +560,12 @@ gboolean moz_container_surface_needs_clear(MozContainer *container) {
898    container->surface_needs_clear = false;
899    return state;
900  }
901 +
902 +gboolean moz_container_egl_surface_needs_update(MozContainer *container){
903 +  gboolean state = container->egl_surface_needs_update;
904 +  container->egl_surface_needs_update = false;
905 +  return state;
906 +}
907  #endif
908  
909  void moz_container_force_default_visual(MozContainer *container) {
910 diff --git widget/gtk/mozcontainer.h widget/gtk/mozcontainer.h
911 index e9c218c1bc3e..1ed6f439805d 100644
912 --- widget/gtk/mozcontainer.h
913 +++ widget/gtk/mozcontainer.h
914 @@ -77,6 +77,7 @@ struct _MozContainer {
915    struct wl_egl_window *eglwindow;
916    struct wl_callback *frame_callback_handler;
917    gboolean surface_needs_clear;
918 +  gboolean egl_surface_needs_update;
919    gboolean ready_to_draw;
920  #endif
921    gboolean force_default_visual;
922 @@ -100,6 +101,7 @@ gboolean moz_container_has_wl_egl_window(MozContainer *container);
923  gboolean moz_container_surface_needs_clear(MozContainer *container);
924  void moz_container_scale_changed(MozContainer *container,
925                                   GtkAllocation *aAllocation);
926 +gboolean moz_container_egl_surface_needs_update(MozContainer *container);
927  #endif
928  
929  #endif /* __MOZ_CONTAINER_H__ */
930 diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
931 index 50e6354ea374..ceabbf583a42 100644
932 --- widget/gtk/nsWindow.cpp
933 +++ widget/gtk/nsWindow.cpp
934 @@ -1886,6 +1886,11 @@ gboolean nsWindow::OnExposeEvent(cairo_t *cr) {
935    region.ScaleRoundOut(scale, scale);
936  
937    if (GetLayerManager()->AsKnowsCompositor() && mCompositorSession) {
938 +#ifdef MOZ_WAYLAND
939 +    if(mCompositorWidgetDelegate && WaylandRequestsUpdatingEGLSurface()) {
940 +      mCompositorWidgetDelegate->RequestsUpdatingEGLSurface();
941 +    }
942 +#endif
943      // We need to paint to the screen even if nothing changed, since if we
944      // don't have a compositing window manager, our pixels could be stale.
945      GetLayerManager()->SetNeedsComposite(true);
946 @@ -6599,6 +6604,17 @@ bool nsWindow::WaylandSurfaceNeedsClear() {
947        "nsWindow::WaylandSurfaceNeedsClear(): We don't have any mContainer!");
948    return false;
949  }
950 +
951 +bool nsWindow::WaylandRequestsUpdatingEGLSurface() {
952 +  if (mContainer) {
953 +    return moz_container_egl_surface_needs_update(MOZ_CONTAINER(mContainer));
954 +  }
955 +
956 +  NS_WARNING(
957 +      "nsWindow::WaylandSurfaceNeedsClear(): We don't have any mContainer!");
958 +  return false;
959 +}
960 +
961  #endif
962  
963  #ifdef MOZ_X11
964 diff --git widget/gtk/nsWindow.h widget/gtk/nsWindow.h
965 index b528ebfdeccb..ea0be70d7eb2 100644
966 --- widget/gtk/nsWindow.h
967 +++ widget/gtk/nsWindow.h
968 @@ -373,6 +373,7 @@ class nsWindow final : public nsBaseWidget {
969    wl_display* GetWaylandDisplay();
970    wl_surface* GetWaylandSurface();
971    bool WaylandSurfaceNeedsClear();
972 +  bool WaylandRequestsUpdatingEGLSurface();
973  #endif
974    virtual void GetCompositorWidgetInitData(
975        mozilla::widget::CompositorWidgetInitData* aInitData) override;
976
977
978 [FILE:1099:patches/patch-bug1527556]
979 commit ba954951557e
980 Author: sotaro <sotaro.ikeda.g@gmail.com>
981 Date:   Mon Feb 18 09:15:30 2019 +0000
982
983     Bug 1527556 - Change MAX_DISPLAY_CONNECTIONS to 3 r=stransky
984     
985     nsWaylandDisplay needs to be allocated for each calling thread(main thread, compositor thread and render thread)
986     
987     Differential Revision: https://phabricator.services.mozilla.com/D20118
988     
989     --HG--
990     extra : moz-landing-system : lando
991 ---
992  widget/gtk/nsWaylandDisplay.cpp | 4 +++-
993  1 file changed, 3 insertions(+), 1 deletion(-)
994
995 diff --git widget/gtk/nsWaylandDisplay.cpp widget/gtk/nsWaylandDisplay.cpp
996 index 4c2804be2831..ac01e1f50347 100644
997 --- widget/gtk/nsWaylandDisplay.cpp.orig        2019-03-26 21:19:53 UTC
998 +++ widget/gtk/nsWaylandDisplay.cpp
999 @@ -14,7 +14,9 @@
1000  namespace mozilla {
1001  namespace widget {
1002  
1003 -#define MAX_DISPLAY_CONNECTIONS 2
1004 +// nsWaylandDisplay needs to be created for each calling thread(main thread,
1005 +// compositor thread and render thread)
1006 +#define MAX_DISPLAY_CONNECTIONS 3
1007  
1008  static nsWaylandDisplay *gWaylandDisplays[MAX_DISPLAY_CONNECTIONS];
1009  static StaticMutex gWaylandDisplaysMutex;
1010
1011
1012 [FILE:7693:patches/patch-bug1527804]
1013 commit 1579a88e491f
1014 Author: sotaro <sotaro.ikeda.g@gmail.com>
1015 Date:   Mon Feb 25 12:15:50 2019 +0000
1016
1017     Bug 1527804 - Trigger composite from frame_callback_handler() r=stransky
1018     
1019     Bug 1514156 expects that nsWindow::OnExposeEvent() is called after frame_callback_handler() called. But it did not happen during opening add-ons(gecko profiler). Then we need to trigger rendering directly from frame_callback_handler() call.
1020     
1021     Differential Revision: https://phabricator.services.mozilla.com/D20272
1022     
1023     --HG--
1024     extra : moz-landing-system : lando
1025 ---
1026  widget/gtk/mozcontainer.cpp | 20 +++++++++----------
1027  widget/gtk/mozcontainer.h   |  7 +++++--
1028  widget/gtk/nsWindow.cpp     | 48 ++++++++++++++++++++++++++++++---------------
1029  widget/gtk/nsWindow.h       |  4 +++-
1030  4 files changed, 50 insertions(+), 29 deletions(-)
1031
1032 diff --git widget/gtk/mozcontainer.cpp widget/gtk/mozcontainer.cpp
1033 index 77ac02e2a049..efe5f7ba86e3 100644
1034 --- widget/gtk/mozcontainer.cpp
1035 +++ widget/gtk/mozcontainer.cpp
1036 @@ -160,7 +160,7 @@ void moz_container_init(MozContainer *container) {
1037    // We can draw to x11 window any time.
1038    container->ready_to_draw = GDK_IS_X11_DISPLAY(gdk_display_get_default());
1039    container->surface_needs_clear = true;
1040 -  container->egl_surface_needs_update = false;
1041 +  container->inital_draw_cb = nullptr;
1042  #endif
1043  }
1044  
1045 @@ -178,12 +178,18 @@ static void frame_callback_handler(void *data, struct wl_callback *callback,
1046                                     uint32_t time) {
1047    MozContainer *container = MOZ_CONTAINER(data);
1048    g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy);
1049 -  if (!container->ready_to_draw) {
1050 -    container->egl_surface_needs_update = true;
1051 +  if (!container->ready_to_draw && container->inital_draw_cb) {
1052 +    container->inital_draw_cb();
1053    }
1054    container->ready_to_draw = true;
1055  }
1056  
1057 +void moz_container_set_initial_draw_callback(
1058 +    MozContainer *container,
1059 +    std::function<void(void)> inital_draw_cb) {
1060 +  container->inital_draw_cb = inital_draw_cb;
1061 +}
1062 +
1063  static const struct wl_callback_listener frame_listener = {
1064      frame_callback_handler};
1065  
1066 @@ -214,8 +220,8 @@ static void moz_container_unmap_wayland(MozContainer *container) {
1067    g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy);
1068  
1069    container->surface_needs_clear = true;
1070 -  container->egl_surface_needs_update = false;
1071    container->ready_to_draw = false;
1072 +  container->inital_draw_cb = nullptr;
1073  }
1074  
1075  static gint moz_container_get_scale(MozContainer *container) {
1076 @@ -560,12 +566,6 @@ gboolean moz_container_surface_needs_clear(MozContainer *container) {
1077    container->surface_needs_clear = false;
1078    return state;
1079  }
1080 -
1081 -gboolean moz_container_egl_surface_needs_update(MozContainer *container){
1082 -  gboolean state = container->egl_surface_needs_update;
1083 -  container->egl_surface_needs_update = false;
1084 -  return state;
1085 -}
1086  #endif
1087  
1088  void moz_container_force_default_visual(MozContainer *container) {
1089 diff --git widget/gtk/mozcontainer.h widget/gtk/mozcontainer.h
1090 index ae6d656646c8..51be814ef975 100644
1091 --- widget/gtk/mozcontainer.h
1092 +++ widget/gtk/mozcontainer.h
1093 @@ -9,6 +9,7 @@
1094  #define __MOZ_CONTAINER_H__
1095  
1096  #include <gtk/gtk.h>
1097 +#include <functional>
1098  
1099  /*
1100   * MozContainer
1101 @@ -77,8 +78,8 @@ struct _MozContainer {
1102    struct wl_egl_window *eglwindow;
1103    struct wl_callback *frame_callback_handler;
1104    gboolean surface_needs_clear;
1105 -  gboolean egl_surface_needs_update;
1106    gboolean ready_to_draw;
1107 +  std::function<void(void)> inital_draw_cb;
1108  #endif
1109    gboolean force_default_visual;
1110  };
1111 @@ -101,7 +102,9 @@ gboolean moz_container_has_wl_egl_window(MozContainer *container);
1112  gboolean moz_container_surface_needs_clear(MozContainer *container);
1113  void moz_container_scale_changed(MozContainer *container,
1114                                   GtkAllocation *aAllocation);
1115 -gboolean moz_container_egl_surface_needs_update(MozContainer *container);
1116 +void moz_container_set_initial_draw_callback(
1117 +    MozContainer *container,
1118 +    std::function<void(void)> inital_draw_cb);
1119  #endif
1120  
1121  #endif /* __MOZ_CONTAINER_H__ */
1122 diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
1123 index acb957d3fb55..54b121ec5514 100644
1124 --- widget/gtk/nsWindow.cpp
1125 +++ widget/gtk/nsWindow.cpp
1126 @@ -675,6 +675,12 @@ void nsWindow::Destroy() {
1127      gFocusWindow = nullptr;
1128    }
1129  
1130 +#ifdef MOZ_WAYLAND
1131 +  if (mContainer) {
1132 +    moz_container_set_initial_draw_callback(mContainer, nullptr);
1133 +  }
1134 +#endif
1135 +
1136    GtkWidget *owningWidget = GetMozContainerWidget();
1137    if (mShell) {
1138      gtk_widget_destroy(mShell);
1139 @@ -1860,6 +1866,23 @@ static bool ExtractExposeRegion(LayoutDeviceIntRegion &aRegion, cairo_t *cr) {
1140    return true;
1141  }
1142  
1143 +#ifdef MOZ_WAYLAND
1144 +void nsWindow::WaylandEGLSurfaceForceRedraw() {
1145 +  MOZ_RELEASE_ASSERT(NS_IsMainThread());
1146 +
1147 +  if (mIsDestroyed) {
1148 +    return;
1149 +  }
1150 +
1151 +  if (CompositorBridgeChild* remoteRenderer = GetRemoteRenderer()) {
1152 +    if (mCompositorWidgetDelegate) {
1153 +      mCompositorWidgetDelegate->RequestsUpdatingEGLSurface();
1154 +    }
1155 +    remoteRenderer->SendForcePresent();
1156 +  }
1157 +}
1158 +#endif
1159 +
1160  gboolean nsWindow::OnExposeEvent(cairo_t *cr) {
1161    // Send any pending resize events so that layout can update.
1162    // May run event loop.
1163 @@ -1888,11 +1911,6 @@ gboolean nsWindow::OnExposeEvent(cairo_t *cr) {
1164    region.ScaleRoundOut(scale, scale);
1165  
1166    if (GetLayerManager()->AsKnowsCompositor() && mCompositorSession) {
1167 -#ifdef MOZ_WAYLAND
1168 -    if(mCompositorWidgetDelegate && WaylandRequestsUpdatingEGLSurface()) {
1169 -      mCompositorWidgetDelegate->RequestsUpdatingEGLSurface();
1170 -    }
1171 -#endif
1172      // We need to paint to the screen even if nothing changed, since if we
1173      // don't have a compositing window manager, our pixels could be stale.
1174      GetLayerManager()->SetNeedsComposite(true);
1175 @@ -3454,6 +3472,15 @@ nsresult nsWindow::Create(nsIWidget *aParent, nsNativeWidget aNativeParent,
1176        // Create a container to hold child windows and child GtkWidgets.
1177        GtkWidget *container = moz_container_new();
1178        mContainer = MOZ_CONTAINER(container);
1179 +#ifdef MOZ_WAYLAND
1180 +      if (!mIsX11Display && ComputeShouldAccelerate()) {
1181 +        RefPtr<nsWindow> self(this);
1182 +        moz_container_set_initial_draw_callback(mContainer,
1183 +            [self]() -> void {
1184 +              self->WaylandEGLSurfaceForceRedraw();
1185 +            });
1186 +      }
1187 +#endif
1188  
1189        // "csd" style is set when widget is realized so we need to call
1190        // it explicitly now.
1191 @@ -6564,17 +6591,6 @@ bool nsWindow::WaylandSurfaceNeedsClear() {
1192        "nsWindow::WaylandSurfaceNeedsClear(): We don't have any mContainer!");
1193    return false;
1194  }
1195 -
1196 -bool nsWindow::WaylandRequestsUpdatingEGLSurface() {
1197 -  if (mContainer) {
1198 -    return moz_container_egl_surface_needs_update(MOZ_CONTAINER(mContainer));
1199 -  }
1200 -
1201 -  NS_WARNING(
1202 -      "nsWindow::WaylandSurfaceNeedsClear(): We don't have any mContainer!");
1203 -  return false;
1204 -}
1205 -
1206  #endif
1207  
1208  #ifdef MOZ_X11
1209 diff --git widget/gtk/nsWindow.h widget/gtk/nsWindow.h
1210 index 5d119b4911e1..dbced693be1c 100644
1211 --- widget/gtk/nsWindow.h
1212 +++ widget/gtk/nsWindow.h
1213 @@ -245,6 +245,9 @@ class nsWindow final : public nsBaseWidget {
1214  
1215    void DispatchContextMenuEventFromMouseEvent(uint16_t domButton,
1216                                                GdkEventButton* aEvent);
1217 +#ifdef MOZ_WAYLAND
1218 +  void WaylandEGLSurfaceForceRedraw();
1219 +#endif
1220  
1221   public:
1222    void ThemeChanged(void);
1223 @@ -342,7 +345,6 @@ class nsWindow final : public nsBaseWidget {
1224    wl_display* GetWaylandDisplay();
1225    wl_surface* GetWaylandSurface();
1226    bool WaylandSurfaceNeedsClear();
1227 -  bool WaylandRequestsUpdatingEGLSurface();
1228  #endif
1229    virtual void GetCompositorWidgetInitData(
1230        mozilla::widget::CompositorWidgetInitData* aInitData) override;
1231
1232
1233 [FILE:35604:patches/patch-bug1530098]
1234 https://github.com/rust-lang/libc/commit/5e187562eed6
1235 https://github.com/rust-lang/libc/commit/e628de2d7d40
1236 https://github.com/rust-lang/libc/commit/6c1e2dec8f2b
1237 https://github.com/rust-lang/libc/commit/69c9c541f76c
1238
1239 diff --git third_party/rust/libc/.cargo-checksum.json third_party/rust/libc/.cargo-checksum.json
1240 index 587d7582bc89..7cdb11ee2d6b 100644
1241 --- third_party/rust/libc/.cargo-checksum.json.orig     2019-03-26 21:19:52 UTC
1242 +++ third_party/rust/libc/.cargo-checksum.json
1243 @@ -1 +1 @@
1244 -{"files":{"Cargo.toml":"74e837a30336b387d94fc92db3d1ece407b47318ca1362a2b8f37dfb28064e54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"a550fd6c92b62c70925cc6a75dd1d40ae93f9a77e3c4e9baacdf014fa0cae550","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"1e8c66067bcbd718119db5eb6e69390c4f0ea72c1543e09b6846a36ef66cd21b","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"12b50abdc5605e3a39eff6bb0d0fccb0885896933c5bfbb3d0cbde9068492a0f","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"f95cd8b514f48686d774b85e4dffccce1a5acd68749d8ff59b204419d448d575","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"1471a694817758331ecdbb23857537563ad7ae56aa3a88e49bf9cd421addcafe","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"0c31058e39d9f25c6f4f9b7fe78c7c8d135f32bfe52199e9b2e7fa10d5dc3940","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"be6d2ccfe78df5d77a2c4ee40ffbd22b1bb2ac0a0cf6b2a108f21406f22ce1a8","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"86b7d1ce555ed5eeeac6b44fd0e9563166ff38ba38e56a82d70800ace3b65946","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"e5b7e6ff40e670200c52919b53474627931b4def18d452323999de201953cf21","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"bbad6abf79078649e76c2379c3c3fcbc4198430736e726a01d96a8f1439e8cb1","src/macros.rs":"8ad55edea39fad158e80c5df0d7b520b6863f5088db4db286ba31c12cbc4d67d","src/redox/mod.rs":"685d4d39911e855bf0fd7879b9a02bc15cefebfb0f520382c1a1353364f0d523","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"0cda592881a1db30f2d96ff0f67cf4214aa99881dfe4f2fb474ef7ec78bd204a","src/unix/bsd/apple/mod.rs":"ac02092ad74cb81fa789e89d541d79525d2298ac77842847b48e5fd1a83fff0d","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"7a8df4e8079ed60ad4ac35362901eb2fea4d53384709e4ac45930899b84f8eaf","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"1b158199be42b37708f10d0e73164cf0b63a2b5ae0e6fcc1feab5944f5377f24","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"9ddcc86d3bb76f426e26c4df8d853b3715a7d6d9006acaa4fa26b2b0f5bb3314","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"6fb522d55eced39ef1bc28873f9ae8d5ab141acde09c5cb6a22aeca577d916ad","src/unix/bsd/netbsdlike/netbsd/mod.rs":"1cd66ed5967c788562d4ad626cfbeb1544f4b9267111de5f6790379b8327f28e","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"37fea61239bd53cd951fd7bc800229f663be2e9ad2e1539ebdf73767ca28b469","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"973331fd80876db55467913556d81f45ea1ede03322fef9c5d552aba833d2207","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"8b8a7a51e1bc20407e42b0ab6c1a0cd1c8fc4f3ef61a04ccb7c8e312495ce30b","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"a8bb096695eea74fb1c5c6766c1e680d28378c452dbc622fa5f91c6ce204306f","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"af909129f76f9bbe571dee2e78f43afd63ff6e46c27a429da43c239537330283","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"d9f59ee9a994490122986b7ae5e3064bf9ce0b888349a388a50341a4c7069842","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"eadc87bfea5f5e8ea50a3776b526cea2b0bfaf6d55240ba88134e19670f8a3a6","src/unix/notbsd/emscripten.rs":"d2d817af2b1496c1ee173f216c478a3a1c26223ef938797103bc50a265284662","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"af1b7bffff09aa5d8662e6452f72bc1e55b6639899b8c2a4be9cd1cfb245de01","src/unix/notbsd/linux/mod.rs":"081cb74be8b465c9cf86289f675cb7c6f7d7eee39713a6764e1871eabcbaee44","src/unix/notbsd/linux/musl/b32/arm.rs":"9d9bff31ab0925a1f62a20945d36a83b94ce3ab78dd202cd468bb31556b21725","src/unix/notbsd/linux/musl/b32/mips.rs":"cb38c463aebfc235f31880db158dd47c6e21f182a092d3f3087d92994b7711da","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"3930a2825657ac9208935341e29cfa62f6e37fc5c6b2c0d0dc9ac8c3b5569d59","src/unix/notbsd/linux/musl/b32/x86.rs":"c02dd333012cf65cb8873fa211eff5e63d466be55451a347510e3d4f50ed515e","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"17c70acf9c6eabeb73916c2abb7d7e8b0310214090faae4a8dc2fd183a9b45ba","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"dac0fd1054a0fa163bce85df58c4ad4d222d8b7353bdb4364482b46c19991d03","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"d57f3e06a0ac8affc5bf9d17e1f217ef1d1d714c947f47e647e0e038deaf48b2","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"024057a910d0b885c63443165d34ce33f972973a9a8f5979906198180b19ad8b","src/unix/notbsd/linux/other/b64/sparc64.rs":"bb28f201e29c7f490a42dd2673eb8180fd82c1824a5d21aeb5aed674ffcc6e07","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"add154a8cfe9392d5a73b6055eb1419902e2b8b5458c22586a6ef8f90f89501b","src/unix/notbsd/linux/s390x.rs":"033cb7c4ee00af352698615de0248a5c6c9bcff57ba671ee22d31b70ef86fb4a","src/unix/notbsd/mod.rs":"134502158bab09d5189249ef400c9ddf7fdf5d1a1bd3134484ca82b80a0833e7","src/unix/solaris/mod.rs":"9c52a7479b56d3bc1f2c9ba5bb44f71ab1470989a54d3d0d85571e19489e4b7e","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"8cf2db30468476b917a60fdffe475917302875a3a4150f29a042ebee182545d1","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"}
1245 \ No newline at end of file
1246 +{"files":{"Cargo.toml":"74e837a30336b387d94fc92db3d1ece407b47318ca1362a2b8f37dfb28064e54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"a550fd6c92b62c70925cc6a75dd1d40ae93f9a77e3c4e9baacdf014fa0cae550","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"1e8c66067bcbd718119db5eb6e69390c4f0ea72c1543e09b6846a36ef66cd21b","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"12b50abdc5605e3a39eff6bb0d0fccb0885896933c5bfbb3d0cbde9068492a0f","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"f95cd8b514f48686d774b85e4dffccce1a5acd68749d8ff59b204419d448d575","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"1471a694817758331ecdbb23857537563ad7ae56aa3a88e49bf9cd421addcafe","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"0c31058e39d9f25c6f4f9b7fe78c7c8d135f32bfe52199e9b2e7fa10d5dc3940","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"be6d2ccfe78df5d77a2c4ee40ffbd22b1bb2ac0a0cf6b2a108f21406f22ce1a8","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"86b7d1ce555ed5eeeac6b44fd0e9563166ff38ba38e56a82d70800ace3b65946","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"e5b7e6ff40e670200c52919b53474627931b4def18d452323999de201953cf21","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"bbad6abf79078649e76c2379c3c3fcbc4198430736e726a01d96a8f1439e8cb1","src/macros.rs":"8ad55edea39fad158e80c5df0d7b520b6863f5088db4db286ba31c12cbc4d67d","src/redox/mod.rs":"685d4d39911e855bf0fd7879b9a02bc15cefebfb0f520382c1a1353364f0d523","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"0cda592881a1db30f2d96ff0f67cf4214aa99881dfe4f2fb474ef7ec78bd204a","src/unix/bsd/apple/mod.rs":"ac02092ad74cb81fa789e89d541d79525d2298ac77842847b48e5fd1a83fff0d","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"9acb311f2f5acf8ce5d28ce60b3eef5715d8f92e25be9adb0c4c78fdb1eee090","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"8976c6416f5946876275abce890d66a16f4d8998aaec0a0fed74ed4eac98ec03","src/unix/bsd/freebsdlike/freebsd/arm.rs":"28f41704ad6ad9fac15b1480c4c31ca3a4d7e101e9a33a1ce8f89960d5f6501b","src/unix/bsd/freebsdlike/freebsd/mod.rs":"791b92bcfb2224a0631032cada52e20934a9b8509e8c4c9d32f5ba60d864f13b","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"8976c6416f5946876275abce890d66a16f4d8998aaec0a0fed74ed4eac98ec03","src/unix/bsd/freebsdlike/freebsd/x86.rs":"e39bf5584f55a4943dcdeda7a086fa093057f0d842c5f93ab6e7321d9eee74a3","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"d16bc0f9d50108c8724c172d716162ab931361f208e5a7b0e60e592258026e53","src/unix/bsd/freebsdlike/mod.rs":"cbf11c5742e217caa435bf841ab9b03dd9e5278dbfecb0f85722a79e90b5ee90","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"6fb522d55eced39ef1bc28873f9ae8d5ab141acde09c5cb6a22aeca577d916ad","src/unix/bsd/netbsdlike/netbsd/mod.rs":"1cd66ed5967c788562d4ad626cfbeb1544f4b9267111de5f6790379b8327f28e","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"37fea61239bd53cd951fd7bc800229f663be2e9ad2e1539ebdf73767ca28b469","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"973331fd80876db55467913556d81f45ea1ede03322fef9c5d552aba833d2207","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"8b8a7a51e1bc20407e42b0ab6c1a0cd1c8fc4f3ef61a04ccb7c8e312495ce30b","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"a8bb096695eea74fb1c5c6766c1e680d28378c452dbc622fa5f91c6ce204306f","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"af909129f76f9bbe571dee2e78f43afd63ff6e46c27a429da43c239537330283","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"d9f59ee9a994490122986b7ae5e3064bf9ce0b888349a388a50341a4c7069842","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"eadc87bfea5f5e8ea50a3776b526cea2b0bfaf6d55240ba88134e19670f8a3a6","src/unix/notbsd/emscripten.rs":"d2d817af2b1496c1ee173f216c478a3a1c26223ef938797103bc50a265284662","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"af1b7bffff09aa5d8662e6452f72bc1e55b6639899b8c2a4be9cd1cfb245de01","src/unix/notbsd/linux/mod.rs":"081cb74be8b465c9cf86289f675cb7c6f7d7eee39713a6764e1871eabcbaee44","src/unix/notbsd/linux/musl/b32/arm.rs":"9d9bff31ab0925a1f62a20945d36a83b94ce3ab78dd202cd468bb31556b21725","src/unix/notbsd/linux/musl/b32/mips.rs":"cb38c463aebfc235f31880db158dd47c6e21f182a092d3f3087d92994b7711da","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"3930a2825657ac9208935341e29cfa62f6e37fc5c6b2c0d0dc9ac8c3b5569d59","src/unix/notbsd/linux/musl/b32/x86.rs":"c02dd333012cf65cb8873fa211eff5e63d466be55451a347510e3d4f50ed515e","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"17c70acf9c6eabeb73916c2abb7d7e8b0310214090faae4a8dc2fd183a9b45ba","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"dac0fd1054a0fa163bce85df58c4ad4d222d8b7353bdb4364482b46c19991d03","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"d57f3e06a0ac8affc5bf9d17e1f217ef1d1d714c947f47e647e0e038deaf48b2","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"024057a910d0b885c63443165d34ce33f972973a9a8f5979906198180b19ad8b","src/unix/notbsd/linux/other/b64/sparc64.rs":"bb28f201e29c7f490a42dd2673eb8180fd82c1824a5d21aeb5aed674ffcc6e07","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"add154a8cfe9392d5a73b6055eb1419902e2b8b5458c22586a6ef8f90f89501b","src/unix/notbsd/linux/s390x.rs":"033cb7c4ee00af352698615de0248a5c6c9bcff57ba671ee22d31b70ef86fb4a","src/unix/notbsd/mod.rs":"134502158bab09d5189249ef400c9ddf7fdf5d1a1bd3134484ca82b80a0833e7","src/unix/solaris/mod.rs":"9c52a7479b56d3bc1f2c9ba5bb44f71ab1470989a54d3d0d85571e19489e4b7e","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"8cf2db30468476b917a60fdffe475917302875a3a4150f29a042ebee182545d1","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"}
1247 \ No newline at end of file
1248 --- third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs.orig        2019-03-26 21:19:52 UTC
1249 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
1250 @@ -1,3 +1,4 @@
1251 +pub type c_char = i8;
1252  pub type clock_t = u64;
1253  pub type ino_t = u64;
1254  pub type lwpid_t = i32;
1255 @@ -210,6 +211,12 @@ s! {
1256          pub sdl_rcf: ::c_ushort,
1257          pub sdl_route: [::c_ushort; 16],
1258      }
1259 +
1260 +    pub struct stack_t {
1261 +        pub ss_sp: *mut ::c_char,
1262 +        pub ss_size: ::size_t,
1263 +        pub ss_flags: ::c_int,
1264 +    }
1265  }
1266  
1267  pub const RAND_MAX: ::c_int = 0x7fff_ffff;
1268 --- third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs.orig      2019-03-26 21:19:52 UTC
1269 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs
1270 @@ -1,3 +1,4 @@
1271 +pub type c_char = u8;
1272  pub type c_long = i64;
1273  pub type c_ulong = u64;
1274  pub type time_t = i64;
1275 --- /dev/null   2019-04-04 01:04:41 UTC
1276 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs
1277 @@ -0,0 +1,37 @@
1278 +pub type c_char = u8;
1279 +pub type c_long = i32;
1280 +pub type c_ulong = u32;
1281 +pub type time_t = i64;
1282 +pub type suseconds_t = i32;
1283 +
1284 +s! {
1285 +    pub struct stat {
1286 +        pub st_dev: ::dev_t,
1287 +        pub st_ino: ::ino_t,
1288 +        pub st_mode: ::mode_t,
1289 +        pub st_nlink: ::nlink_t,
1290 +        pub st_uid: ::uid_t,
1291 +        pub st_gid: ::gid_t,
1292 +        pub st_rdev: ::dev_t,
1293 +        pub st_atime: ::time_t,
1294 +        pub st_atime_nsec: ::c_long,
1295 +        pub st_atime_pad: ::c_long,
1296 +        pub st_mtime: ::time_t,
1297 +        pub st_mtime_nsec: ::c_long,
1298 +        pub st_mtime_pad: ::c_long,
1299 +        pub st_ctime: ::time_t,
1300 +        pub st_ctime_nsec: ::c_long,
1301 +        pub st_ctime_pad: ::c_long,
1302 +        pub st_size: ::off_t,
1303 +        pub st_blocks: ::blkcnt_t,
1304 +        pub st_blksize: ::blksize_t,
1305 +        pub st_flags: ::fflags_t,
1306 +        pub st_gen: ::uint32_t,
1307 +        pub st_lspare: ::int32_t,
1308 +        pub st_birthtime: ::time_t,
1309 +        pub st_birthtime_nsec: ::c_long,
1310 +        pub st_birthtime_pad: ::c_long,
1311 +    }
1312 +}
1313 +
1314 +pub const MAP_32BIT: ::c_int = 0x00080000;
1315 --- third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs.orig  2019-03-26 21:19:52 UTC
1316 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
1317 @@ -182,6 +182,12 @@ s! {
1318          pub sdl_slen: ::c_uchar,
1319          pub sdl_data: [::c_char; 46],
1320      }
1321 +
1322 +    pub struct stack_t {
1323 +        pub ss_sp: *mut ::c_void,
1324 +        pub ss_size: ::size_t,
1325 +        pub ss_flags: ::c_int,
1326 +    }
1327  }
1328  
1329  pub const SIGEV_THREAD_ID: ::c_int = 4;
1330 @@ -1034,6 +1040,12 @@ cfg_if! {
1331      } else if #[cfg(target_arch = "aarch64")] {
1332          mod aarch64;
1333          pub use self::aarch64::*;
1334 +    } else if #[cfg(target_arch = "arm")] {
1335 +        mod arm;
1336 +        pub use self::arm::*;
1337 +    } else if #[cfg(target_arch = "powerpc64")] {
1338 +        mod powerpc64;
1339 +        pub use self::powerpc64::*;
1340      } else {
1341          // Unknown target_arch
1342      }
1343 --- /dev/null   2019-04-04 01:04:41 UTC
1344 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs
1345 @@ -0,0 +1,33 @@
1346 +pub type c_char = u8;
1347 +pub type c_long = i64;
1348 +pub type c_ulong = u64;
1349 +pub type time_t = i64;
1350 +pub type suseconds_t = i64;
1351 +
1352 +s! {
1353 +    pub struct stat {
1354 +        pub st_dev: ::dev_t,
1355 +        pub st_ino: ::ino_t,
1356 +        pub st_mode: ::mode_t,
1357 +        pub st_nlink: ::nlink_t,
1358 +        pub st_uid: ::uid_t,
1359 +        pub st_gid: ::gid_t,
1360 +        pub st_rdev: ::dev_t,
1361 +        pub st_atime: ::time_t,
1362 +        pub st_atime_nsec: ::c_long,
1363 +        pub st_mtime: ::time_t,
1364 +        pub st_mtime_nsec: ::c_long,
1365 +        pub st_ctime: ::time_t,
1366 +        pub st_ctime_nsec: ::c_long,
1367 +        pub st_size: ::off_t,
1368 +        pub st_blocks: ::blkcnt_t,
1369 +        pub st_blksize: ::blksize_t,
1370 +        pub st_flags: ::fflags_t,
1371 +        pub st_gen: ::uint32_t,
1372 +        pub st_lspare: ::int32_t,
1373 +        pub st_birthtime: ::time_t,
1374 +        pub st_birthtime_nsec: ::c_long,
1375 +    }
1376 +}
1377 +
1378 +pub const MAP_32BIT: ::c_int = 0x00080000;
1379 --- third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs.orig  2019-03-26 21:19:52 UTC
1380 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs
1381 @@ -1,3 +1,4 @@
1382 +pub type c_char = i8;
1383  pub type c_long = i32;
1384  pub type c_ulong = u32;
1385  pub type time_t = i32;
1386 --- third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs.orig       2019-03-26 21:19:52 UTC
1387 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/x86_64.rs
1388 @@ -1,3 +1,4 @@
1389 +pub type c_char = i8;
1390  pub type c_long = i64;
1391  pub type c_ulong = u64;
1392  pub type time_t = i64;
1393 --- third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs.orig  2019-03-26 21:19:52 UTC
1394 +++ third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs
1395 @@ -1,4 +1,3 @@
1396 -pub type c_char = i8;
1397  pub type dev_t = u32;
1398  pub type mode_t = u16;
1399  pub type pthread_attr_t = *mut ::c_void;
1400 @@ -82,13 +81,6 @@ s! {
1401          pub sa_mask: sigset_t,
1402      }
1403  
1404 -    pub struct stack_t {
1405 -        // In FreeBSD 11 and later, ss_sp is actually a void*
1406 -        pub ss_sp: *mut ::c_char,
1407 -        pub ss_size: ::size_t,
1408 -        pub ss_flags: ::c_int,
1409 -    }
1410 -
1411      pub struct sched_param {
1412          pub sched_priority: ::c_int,
1413      }
1414
1415
1416 [FILE:806:patches/patch-bug1530659]
1417 Always pass -Isilk/fixed to unbreak on aarch64 after bug 1522016
1418
1419 diff --git media/libopus/moz.build media/libopus/moz.build
1420 index cc82c8e6a616..e83a70f94e0a 100644
1421 --- media/libopus/moz.build.orig        2019-03-26 21:19:47 UTC
1422 +++ media/libopus/moz.build
1423 @@ -63,6 +63,8 @@ LOCAL_INCLUDES += [
1424      'celt',
1425      'include',
1426      'silk',
1427 +    'silk/fixed',
1428 +    'silk/float',
1429      'src',
1430  ]
1431  
1432 @@ -76,15 +78,9 @@ UNIFIED_SOURCES += opus_sources
1433  SOURCES += opus_nonunified_sources
1434  
1435  if CONFIG['MOZ_SAMPLE_TYPE_FLOAT32']:
1436 -    LOCAL_INCLUDES += [
1437 -        'silk/float',
1438 -    ]
1439      UNIFIED_SOURCES += silk_sources_float
1440      UNIFIED_SOURCES += opus_sources_float
1441  else:
1442 -    LOCAL_INCLUDES += [
1443 -        'silk/fixed',
1444 -    ]
1445      UNIFIED_SOURCES += silk_sources_fixed
1446  
1447  if CONFIG['CPU_ARCH'] in ('x86', 'x86_64'):
1448
1449
1450 [FILE:3587:patches/patch-bug1532024]
1451 commit 554777b1d130
1452 Author: sotaro <sotaro.ikeda.g@gmail.com>
1453 Date:   Wed Mar 6 08:17:51 2019 +0000
1454
1455     Bug 1532024 - Handle a case that GetRemoteRenderer() returned nullptr r=stransky
1456     
1457     Differential Revision: https://phabricator.services.mozilla.com/D21831
1458     
1459     --HG--
1460     extra : moz-landing-system : lando
1461 ---
1462  widget/gtk/nsWindow.cpp | 27 ++++++++++++++++++---------
1463  widget/gtk/nsWindow.h   |  3 +++
1464  2 files changed, 21 insertions(+), 9 deletions(-)
1465
1466 diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
1467 index 96faeea1cf87..46956412f341 100644
1468 --- widget/gtk/nsWindow.cpp.orig        2019-04-04 01:04:41 UTC
1469 +++ widget/gtk/nsWindow.cpp
1470 @@ -399,6 +399,10 @@ nsWindow::nsWindow() {
1471    mXDepth = 0;
1472  #endif /* MOZ_X11 */
1473  
1474 +#ifdef MOZ_WAYLAND
1475 +  mNeedsUpdatingEGLSurface = false;
1476 +#endif
1477 +
1478    if (!gGlobalsInitialized) {
1479      gGlobalsInitialized = true;
1480  
1481 @@ -1870,12 +1874,14 @@ static bool ExtractExposeRegion(LayoutDe
1482  void nsWindow::WaylandEGLSurfaceForceRedraw() {
1483    MOZ_RELEASE_ASSERT(NS_IsMainThread());
1484  
1485 -  if (mIsDestroyed) {
1486 +  if (mIsDestroyed || !mNeedsUpdatingEGLSurface) {
1487      return;
1488    }
1489  
1490 -  if (CompositorBridgeChild* remoteRenderer = GetRemoteRenderer()) {
1491 +  if (CompositorBridgeChild *remoteRenderer = GetRemoteRenderer()) {
1492 +    MOZ_ASSERT(mCompositorWidgetDelegate);
1493      if (mCompositorWidgetDelegate) {
1494 +      mNeedsUpdatingEGLSurface = false;
1495        mCompositorWidgetDelegate->RequestsUpdatingEGLSurface();
1496      }
1497      remoteRenderer->SendForcePresent();
1498 @@ -3472,10 +3478,10 @@ nsresult nsWindow::Create(nsIWidget *aPa
1499  #ifdef MOZ_WAYLAND
1500        if (!mIsX11Display && ComputeShouldAccelerate()) {
1501          RefPtr<nsWindow> self(this);
1502 -        moz_container_set_initial_draw_callback(mContainer,
1503 -            [self]() -> void {
1504 -              self->WaylandEGLSurfaceForceRedraw();
1505 -            });
1506 +        moz_container_set_initial_draw_callback(mContainer, [self]() -> void {
1507 +          self->mNeedsUpdatingEGLSurface = true;
1508 +          self->WaylandEGLSurfaceForceRedraw();
1509 +        });
1510        }
1511  #endif
1512  
1513 @@ -6043,6 +6049,9 @@ void nsWindow::SetCompositorWidgetDelega
1514      MOZ_ASSERT(mCompositorWidgetDelegate,
1515                 "nsWindow::SetCompositorWidgetDelegate called with a "
1516                 "non-PlatformCompositorWidgetDelegate");
1517 +#ifdef MOZ_WAYLAND
1518 +    WaylandEGLSurfaceForceRedraw();
1519 +#endif
1520    } else {
1521      mCompositorWidgetDelegate = nullptr;
1522    }
1523 @@ -6528,8 +6537,7 @@ nsWindow::CSDSupportLevel nsWindow::GetS
1524  // Check for Mutter regression on X.org (Bug 1530252). In that case we
1525  // don't hide system titlebar by default as we can't draw transparent
1526  // corners reliably.
1527 -bool nsWindow::TitlebarCanUseShapeMask()
1528 -{
1529 +bool nsWindow::TitlebarCanUseShapeMask() {
1530    static int canUseShapeMask = -1;
1531    if (canUseShapeMask != -1) {
1532      return canUseShapeMask;
1533 @@ -6559,7 +6567,8 @@ bool nsWindow::HideTitlebarByDefault() {
1534    // When user defined widget.default-hidden-titlebar don't do any
1535    // heuristics and just follow it.
1536    if (Preferences::HasUserValue("widget.default-hidden-titlebar")) {
1537 -    hideTitlebar = Preferences::GetBool("widget.default-hidden-titlebar", false);
1538 +    hideTitlebar =
1539 +        Preferences::GetBool("widget.default-hidden-titlebar", false);
1540      return hideTitlebar;
1541    }
1542  
1543 --- widget/gtk/nsWindow.h.orig  2019-04-04 01:04:41 UTC
1544 +++ widget/gtk/nsWindow.h
1545 @@ -433,6 +433,9 @@ class nsWindow final : public nsBaseWidg
1546    bool mIsDragPopup;
1547    // Can we access X?
1548    bool mIsX11Display;
1549 +#ifdef MOZ_WAYLAND
1550 +  bool mNeedsUpdatingEGLSurface;
1551 +#endif
1552  
1553   private:
1554    void DestroyChildWindows();
1555
1556
1557 [FILE:8116:patches/patch-bug847568]
1558 # Allow building against system-wide graphite2/harfbuzz.
1559
1560 diff --git config/system-headers.mozbuild config/system-headers.mozbuild
1561 index 7620b4d00623..09d3db5ca8c0 100644
1562 --- config/system-headers.mozbuild.orig 2019-03-26 21:19:42 UTC
1563 +++ config/system-headers.mozbuild
1564 @@ -1304,6 +1304,19 @@ if CONFIG['MOZ_ENABLE_CONTENTMANAGER']:
1565          'SelectSingleContentItemPage.h',
1566      ]
1567  
1568 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
1569 +    system_headers += [
1570 +        'graphite2/Font.h',
1571 +        'graphite2/Segment.h',
1572 +    ]
1573 +
1574 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1575 +    system_headers += [
1576 +        'harfbuzz/hb-glib.h',
1577 +        'harfbuzz/hb-ot.h',
1578 +        'harfbuzz/hb.h',
1579 +    ]
1580 +
1581  if CONFIG['MOZ_SYSTEM_LIBVPX']:
1582      system_headers += [
1583          'vpx_mem/vpx_mem.h',
1584 --- dom/base/moz.build.orig     2019-03-26 21:19:43 UTC
1585 +++ dom/base/moz.build
1586 @@ -518,6 +518,9 @@ if CONFIG['MOZ_BUILD_APP'] in ['browser'
1587  if CONFIG['MOZ_X11']:
1588      CXXFLAGS += CONFIG['TK_CFLAGS']
1589  
1590 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1591 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1592 +
1593  GENERATED_FILES += [
1594      'PropertyUseCounterMap.inc',
1595      'UseCounterList.h',
1596 --- gfx/graphite2/moz-gr-update.sh.orig 2019-03-26 21:19:44 UTC
1597 +++ gfx/graphite2/moz-gr-update.sh
1598 @@ -1,6 +1,7 @@
1599  #!/bin/bash
1600  
1601  # Script used to update the Graphite2 library in the mozilla source tree
1602 +# and bump version for --with-system-graphite2
1603  
1604  # This script lives in gfx/graphite2, along with the library source,
1605  # but must be run from the top level of the mozilla-central tree.
1606 @@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >>
1607  #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
1608  #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
1609  
1610 +# chase version for --with-system-graphite2
1611 +perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \
1612 +  if /GR2_VERSION_REQUIRE/" old-configure.in
1613 +
1614  # summarize what's been touched
1615  echo Updated to $RELEASE.
1616  echo Here is what changed in the gfx/graphite2 directory:
1617  echo
1618  
1619 -hg stat gfx/graphite2
1620 +hg stat old-configure.in gfx/graphite2
1621  
1622  echo
1623  echo If gfx/graphite2/src/files.mk has changed, please make corresponding
1624 --- gfx/harfbuzz/README-mozilla.orig    2019-03-26 21:19:44 UTC
1625 +++ gfx/harfbuzz/README-mozilla
1626 @@ -15,3 +15,8 @@ from within the gfx/harfbuzz directory.
1627  
1628  If the collection of source files changes, manual updates to moz.build may be
1629  needed as we don't use the upstream makefiles.
1630 +
1631 +The in-tree copy may be omitted during build by --with-system-harfbuzz.
1632 +Make sure to keep pkg-config version check within toolkit/moz.configure in sync
1633 +with checkout version or increment latest tag by one if it's not based
1634 +on upstream release.
1635 --- gfx/moz.build.orig  2019-03-26 21:19:44 UTC
1636 +++ gfx/moz.build
1637 @@ -10,6 +10,12 @@ with Files('**'):
1638  if CONFIG['MOZ_TREE_CAIRO']:
1639      DIRS += ['cairo']
1640  
1641 +if not CONFIG['MOZ_SYSTEM_GRAPHITE2']:
1642 +    DIRS += ['graphite2/src' ]
1643 +
1644 +if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1645 +    DIRS += ['harfbuzz/src']
1646 +
1647  DIRS += [
1648      '2d',
1649      'ycbcr',
1650 @@ -18,8 +24,6 @@ DIRS += [
1651      'qcms',
1652      'gl',
1653      'layers',
1654 -    'graphite2/src',
1655 -    'harfbuzz/src',
1656      'ots/src',
1657      'thebes',
1658      'ipc',
1659 --- gfx/skia/generate_mozbuild.py.orig  2019-03-26 21:19:44 UTC
1660 +++ gfx/skia/generate_mozbuild.py
1661 @@ -138,6 +138,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang
1662          '-Wno-unused-private-field',
1663      ]
1664  
1665 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1666 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1667 +
1668  if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
1669      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
1670      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
1671 --- gfx/skia/moz.build.orig     2019-03-26 21:19:44 UTC
1672 +++ gfx/skia/moz.build
1673 @@ -818,6 +818,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang
1674          '-Wno-unused-private-field',
1675      ]
1676  
1677 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1678 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1679 +
1680  if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
1681      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
1682      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
1683 --- gfx/thebes/moz.build.orig   2019-03-26 21:19:44 UTC
1684 +++ gfx/thebes/moz.build
1685 @@ -276,7 +276,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3
1686  
1687  LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
1688  
1689 -DEFINES['GRAPHITE2_STATIC'] = True
1690 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
1691 +    CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
1692 +else:
1693 +    DEFINES['GRAPHITE2_STATIC'] = True
1694 +
1695 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1696 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1697  
1698  if CONFIG['CC_TYPE'] == 'clang':
1699      # Suppress warnings from Skia header files.
1700 --- intl/unicharutil/util/moz.build.orig        2019-03-26 21:19:44 UTC
1701 +++ intl/unicharutil/util/moz.build
1702 @@ -25,4 +25,7 @@ UNIFIED_SOURCES += [
1703      'nsUnicodeProperties.cpp',
1704  ]
1705  
1706 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1707 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1708 +
1709  FINAL_LIBRARY = 'xul'
1710 --- netwerk/dns/moz.build.orig  2019-03-26 21:19:48 UTC
1711 +++ netwerk/dns/moz.build
1712 @@ -79,3 +79,6 @@ USE_LIBS += ['icu']
1713  
1714  if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
1715      CXXFLAGS += ['-Wno-error=shadow']
1716 +
1717 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1718 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
1719 --- old-configure.in.orig       2019-03-26 21:19:48 UTC
1720 +++ old-configure.in
1721 @@ -3035,6 +3035,27 @@ dnl ====================================
1722  AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
1723  
1724  dnl ========================================================
1725 +dnl Check for graphite2
1726 +dnl ========================================================
1727 +if test -n "$MOZ_SYSTEM_GRAPHITE2"; then
1728 +    dnl graphite2.pc has bogus version, check manually
1729 +    _SAVE_CFLAGS=$CFLAGS
1730 +    CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS"
1731 +    AC_TRY_COMPILE([ #include <graphite2/Font.h>
1732 +                     #define GR2_VERSION_REQUIRE(major,minor,bugfix)  \
1733 +                             ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
1734 +                               * 100 + GR2_VERSION_BUGFIX >= \
1735 +                               (major) * 10000 + (minor) * 100 + (bugfix) )
1736 +                   ], [
1737 +                     #if !GR2_VERSION_REQUIRE(1,3,12)
1738 +                     #error "Insufficient graphite2 version."
1739 +                     #endif
1740 +                   ], [],
1741 +                   [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])])
1742 +    CFLAGS=$_SAVE_CFLAGS
1743 +fi
1744 +
1745 +dnl ========================================================
1746  dnl Check for pixman and cairo
1747  dnl ========================================================
1748  
1749 --- toolkit/library/moz.build.orig      2019-03-26 21:19:52 UTC
1750 +++ toolkit/library/moz.build
1751 @@ -231,6 +231,12 @@ if CONFIG['MOZ_SYSTEM_PNG']:
1752  if CONFIG['MOZ_SYSTEM_WEBP']:
1753      OS_LIBS += CONFIG['MOZ_WEBP_LIBS']
1754  
1755 +if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
1756 +    OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
1757 +
1758 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
1759 +    OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
1760 +
1761  if CONFIG['MOZ_SYSTEM_LIBEVENT']:
1762      OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
1763  
1764 --- toolkit/moz.configure.orig  2019-03-26 21:19:52 UTC
1765 +++ toolkit/moz.configure
1766 @@ -910,6 +910,26 @@ add_old_configure_assignment('FT2_LIBS',
1767  add_old_configure_assignment('FT2_CFLAGS',
1768                               ft2_info.cflags)
1769  
1770 +# Graphite2
1771 +# ==============================================================
1772 +option('--with-system-graphite2',
1773 +       help="Use system graphite2 (located with pkgconfig)")
1774 +
1775 +system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2',
1776 +                                     when='--with-system-graphite2')
1777 +
1778 +set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True))
1779 +
1780 +# HarfBuzz
1781 +# ==============================================================
1782 +option('--with-system-harfbuzz',
1783 +       help="Use system harfbuzz (located with pkgconfig)")
1784 +
1785 +system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 2.3.1',
1786 +                                    when='--with-system-harfbuzz')
1787 +
1788 +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
1789 +
1790  # Marionette remote protocol
1791  # ==============================================================
1792  #
1793
1794
1795 [FILE:855:patches/patch-dom_media_flac_FlacDecoder.cpp]
1796 Enable FLAC on platforms without ffvpx like powerpc*
1797
1798 diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp
1799 index 53fc3c9937f7..b23771ab80fa 100644
1800 --- dom/media/flac/FlacDecoder.cpp.orig 2019-03-26 21:19:43 UTC
1801 +++ dom/media/flac/FlacDecoder.cpp
1802 @@ -7,12 +7,17 @@
1803  #include "FlacDecoder.h"
1804  #include "MediaContainerType.h"
1805  #include "mozilla/StaticPrefs.h"
1806 +#include "PDMFactory.h"
1807  
1808  namespace mozilla {
1809  
1810  /* static */ bool FlacDecoder::IsEnabled() {
1811  #ifdef MOZ_FFVPX
1812    return StaticPrefs::MediaFlacEnabled();
1813 +#elif defined(MOZ_FFMPEG)
1814 +  RefPtr<PDMFactory> platform = new PDMFactory();
1815 +  return StaticPrefs::MediaFlacEnabled() && platform->SupportsMimeType(NS_LITERAL_CSTRING("audio/flac"),
1816 +                                    /* DecoderDoctorDiagnostics* */ nullptr);
1817  #else
1818    // Until bug 1295886 is fixed.
1819    return false;
1820
1821
1822 [FILE:893:patches/patch-env-api-keys]
1823 # Accept API keys from environment like before bug 1294585
1824
1825 --- build/moz.configure/keyfiles.configure.orig 2019-03-26 21:19:42 UTC
1826 +++ build/moz.configure/keyfiles.configure
1827 @@ -18,6 +18,7 @@ def keyfile(desc, default=None, help=Non
1828      @checking('for the %s key' % desc, lambda x: x and x is not no_key)
1829      @imports(_from='__builtin__', _import='open')
1830      @imports(_from='__builtin__', _import='IOError')
1831 +    @imports(_from='os', _import='environ')
1832      def keyfile(value):
1833          if value:
1834              try:
1835 @@ -28,7 +29,7 @@ def keyfile(desc, default=None, help=Non
1836                      raise FatalCheckError("'%s' is empty." % value[0])
1837              except IOError as e:
1838                  raise FatalCheckError("'%s': %s." % (value[0], e.strerror))
1839 -        return no_key
1840 +        return environ.get('MOZ_%s_KEY' % desc.upper().replace(' ', '_')) or no_key
1841  
1842      return keyfile
1843  
1844
1845
1846 [FILE:890:patches/patch-gfx_skia_skia_src_core_SkCpu.cpp]
1847 Regressed by https://svnweb.freebsd.org/changeset/base/324815
1848
1849 gfx/skia/skia/src/core/SkCpu.cpp:81:27: error: use of undeclared identifier 'getauxval'
1850         uint32_t hwcaps = getauxval(AT_HWCAP);
1851                           ^
1852
1853 --- gfx/skia/skia/src/core/SkCpu.cpp.orig       2019-03-26 21:19:44 UTC
1854 +++ gfx/skia/skia/src/core/SkCpu.cpp
1855 @@ -70,6 +70,20 @@
1856          return features;
1857      }
1858  
1859 +#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
1860 +    #include <machine/armreg.h>
1861 +
1862 +    static uint32_t read_cpu_features() {
1863 +        uint32_t features = 0;
1864 +        uint64_t id_aa64isar0;
1865 +
1866 +        id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
1867 +        if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
1868 +            features |= SkCpu::CRC32;
1869 +        }
1870 +        return features;
1871 +    }
1872 +
1873  #elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
1874      #include <sys/auxv.h>
1875  
1876
1877
1878 [FILE:316:patches/patch-ipc_chromium_src_base_platform__thread__posix.cc]
1879 --- ipc/chromium/src/base/platform_thread_posix.cc.orig 2019-03-26 21:19:44 UTC
1880 +++ ipc/chromium/src/base/platform_thread_posix.cc
1881 @@ -16,6 +16,8 @@
1882  #elif defined(OS_LINUX)
1883  #  include <sys/syscall.h>
1884  #  include <sys/prctl.h>
1885 +#elif defined(OS_DRAGONFLY)
1886 +#  include <sys/lwp.h>
1887  #endif
1888  
1889  #if !defined(OS_MACOSX)
1890
1891
1892 [FILE:613:patches/patch-ipc_chromium_src_base_shared__memory__posix.cc]
1893 --- ipc/chromium/src/base/shared_memory_posix.cc.orig   2019-03-26 21:19:44 UTC
1894 +++ ipc/chromium/src/base/shared_memory_posix.cc
1895 @@ -83,6 +83,11 @@ bool SharedMemory::AppendPosixShmPrefix(
1896      StringAppendF(str, "snap.%s.", kSnap);
1897    }
1898  #  endif  // OS_LINUX
1899 +#  ifdef OS_DRAGONFLY
1900 +  // DragonFly BSD has a userland IPC implementation, we need to prefix the
1901 +  // path to shm_open(3), preferably with '/tmp'
1902 +  StringAppendF(str, "tmp/");
1903 +#  endif
1904    // Hopefully the "implementation defined" name length limit is long
1905    // enough for this.
1906    StringAppendF(str, "org.mozilla.ipc.%d.", static_cast<int>(pid));
1907
1908
1909 [FILE:575:patches/patch-js_src_old-configure.in]
1910 --- js/src/old-configure.in.orig        2019-03-26 21:19:45 UTC
1911 +++ js/src/old-configure.in
1912 @@ -852,7 +852,7 @@ dnl Checks for header files.
1913  dnl ========================================================
1914  AC_HEADER_DIRENT
1915  case "$target_os" in
1916 -freebsd*)
1917 +freebsd*|dragonfly*)
1918  # for stuff like -lXshm
1919      CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
1920      ;;
1921 @@ -971,7 +971,7 @@ then
1922      fi
1923  
1924         case "$target" in
1925 -           *-*-freebsd*)
1926 +           *-*-freebsd*|*-*-dragonfly*)
1927                         AC_DEFINE(_REENTRANT)
1928                         AC_DEFINE(_THREAD_SAFE)
1929                         dnl -pthread links in -lpthread, so don't specify it explicitly.
1930
1931
1932 [FILE:297:patches/patch-media_libcubeb_src_cubeb__jack.cpp]
1933 --- media/libcubeb/src/cubeb_jack.cpp.orig      2019-03-26 21:19:47 UTC
1934 +++ media/libcubeb/src/cubeb_jack.cpp
1935 @@ -8,7 +8,7 @@
1936   */
1937  #define _DEFAULT_SOURCE
1938  #define _BSD_SOURCE
1939 -#ifndef __FreeBSD__
1940 +#if !(defined __FreeBSD__ || defined __DragonFly__)
1941  #define _POSIX_SOURCE
1942  #endif
1943  #include <dlfcn.h>
1944
1945
1946 [FILE:565:files/pkg-deinstall-single.in]
1947 #!/bin/sh
1948 #
1949
1950 umask 022
1951 PATH=/bin:/usr/bin
1952
1953 [ "x$1" = "x" ] && exit 1
1954 [ "x$2" != "xDEINSTALL" ] && exit 0
1955
1956 MOZDIR=%%MOZDIR%%
1957
1958 rm -rf ${MOZDIR}/chrome/overlayinfo
1959 rm -f ${MOZDIR}/chrome/*.rdf
1960 rm -f ${MOZDIR}/component.reg
1961 rm -f ${MOZDIR}/components/*.dat
1962 rm -f ${MOZDIR}/components.ini
1963 rm -f ${MOZDIR}/defaults.ini
1964 rm -f ${MOZDIR}/chrome/app-chrome.manifest
1965 rm -rf ${MOZDIR}/updates
1966 find %%MOZDIR%%/plugins/ -depth 1 -type l -delete > /dev/null 2>&1
1967 find %%MOZDIR%%/extensions/ -depth 1 -type l -delete > /dev/null 2>&1
1968 rmdir ${MOZDIR}/chrome
1969 rmdir ${MOZDIR}
1970
1971 exit 0
1972
1973
1974 [FILE:719:files/pkg-install-single.in]
1975 #!/bin/sh
1976 #
1977
1978 umask 022
1979 PATH=/bin:/usr/bin
1980
1981 [ "x$1" = "x" ] && exit 1
1982 [ "x$2" != "xPOST-INSTALL" ] && exit 0
1983
1984 MOZDIR=%%MOZDIR%%
1985 MOZBIN=${MOZDIR}/%%MOZILLA_BIN%%
1986 REGXPCOM=${MOZDIR}/regxpcom
1987 REGCHROME=${MOZDIR}/regchrome
1988
1989 rm -rf ${MOZDIR}/chrome/overlayinfo
1990 rm -f ${MOZDIR}/chrome/*.rdf
1991 mkdir -p ${MOZDIR}/chrome/overlayinfo
1992 rm -f ${MOZDIR}/component.reg
1993
1994 cd ${MOZDIR} || exit 1
1995 if [ -f ${REGXPCOM} ]; then
1996         ./run-mozilla.sh ${REGXPCOM} || true
1997 fi
1998 if [ -f ${REGCHROME} ]; then
1999         ./run-mozilla.sh ${REGCHROME} || true
2000 fi
2001 if [ -f ${MOZBIN} -a "${1%-*}" = "nvu" ]; then
2002         ./run-mozilla.sh ${MOZBIN} -register > /dev/null 2>&1
2003 fi
2004 cp -R %%LOCALBASE%%/lib/xpi/symlinks/%%MOZILLA%%/ %%MOZDIR%%/extensions/ > /dev/null 2>&1
2005
2006 exit 0
2007