Commit Graph

74 Commits

Author SHA1 Message Date
Doug Thayer
35bd3f0b0d Bug 1448040 - Remove HangMonitor/ChromeHangs r=Nika
Fairly straightforward, just a blanket removal. Haven't heard
anything on dev-platform or fx-data-dev regarding this removal,
so I think it's likely safe to remove on Nightly, and we can
revert if anyone makes a fuss.

As part of removing the HangMonitor, I renamed a few things and
reorganized the namespaces to not depend on a HangMonitor
namespace. Hopefully this doesn't produce too much noise in the
diff, it just seemed appropriate to move everything around
rather than keep dangling vestiges of the old system.

MozReview-Commit-ID: 8C8NFnOP5GU
2018-04-29 18:21:20 -07:00
Cosmin Sabou
65e12679b2 Backed out changeset 531593bacc4e (bug 1448040) for Android build bustages on HangAnnotations.h. CLOSED TREE 2018-06-07 19:22:31 +03:00
Doug Thayer
9710c4d367 Bug 1448040 - Remove HangMonitor/ChromeHangs r=Nika
Fairly straightforward, just a blanket removal. Haven't heard
anything on dev-platform or fx-data-dev regarding this removal,
so I think it's likely safe to remove on Nightly, and we can
revert if anyone makes a fuss.

As part of removing the HangMonitor, I renamed a few things and
reorganized the namespaces to not depend on a HangMonitor
namespace. Hopefully this doesn't produce too much noise in the
diff, it just seemed appropriate to move everything around
rather than keep dangling vestiges of the old system.

MozReview-Commit-ID: 8C8NFnOP5GU
2018-04-29 18:21:20 -07:00
Ting-Yu Chou
2dafbec07b Bug 1401883 - don't hold unnecessary references to the Windows app shell; r=jimm
When runnables are posted to the main thread's event loop, the event
loop notifies any thread observers that this has been done.  The app
shell registers itself as just such a runnable, and posts messages to
the native event loop that processing native events needs to be done.

On Windows, this posting takes an extra reference to the app shell, to
keep it alive until the message is processed by the native event loop,
since app shell code needs to be invoked during that processing.  The
processing releases this extra reference, so everything stays balanced.

Except that it's possible for messages to be posted to the native event
loop, and then browser shutdown happens.  Those messages are not
processed and the associated references taken are not released.  This
imbalance means that in debug builds, we appear to be leaking the app
shell, and that leaking results in intermittent oranges.

This intermittent orange has manifested itself in a variety of ways over
the years, depending on how big the app shell itself was (since that
changes the number of bytes leaked) and how many leak-checked things the
app shell was holding on to.  This bug is merely the latest
manifestation; the last serious work on analyzing the phenomenon and
fixing it was done in bug 1220517.

The solution proposed in that bug was that we simply stop the extra
reference counting; when the app shell is destroyed normally, we
shouldn't be processing the native event loop any more anyway.  So even
if the native event loop is holding (freed) pointers to the app shell,
we'd never execute the callback and perform a use-after-free.  Reading
through the code suggests that this *ought* to be the case, but the
potential for shooting ourselves in the foot seems awfully high.

In any event, this is not a problem unique to Windows; we have seen this
same sort of thing happen on OS X.  See nsAppShell::ProcessGeckoEvents
in widget/cocoa/nsAppShell.mm.

Here we propose a slightly different solution: we keep track of the
number of native event callbacks we have scheduled, incrementing when we
schedule, and decrementing when we actually run one.  When the app shell
is destroyed, we simply set the number of outstanding events to zero,
and we prohibit the callback from accessing the app shell if there are
no outstanding events.  This solution is analogous to dropping the extra
reference counting, but avoids potential badness if we do wind up
processing native events after the app shell is destroyed.
2018-06-06 11:05:18 -04:00
Markus Stange
32fd99a215 Bug 1462784 - Annotate idle stacks in the native event loop on Windows. r=froydnj
MozReview-Commit-ID: A0c3ZLLkLUC
2018-05-18 18:59:05 -04:00
Csoregi Natalia
27ccec9c4c Backed out 18 changesets (bug 1462784) for ESlint failure on FlameGraph.js:1297. CLOSED TREE
Backed out changeset 79556798ff9f (bug 1462784)
Backed out changeset 88321efb673b (bug 1462784)
Backed out changeset 7880f9dc7023 (bug 1462784)
Backed out changeset 71fe35fd1f7e (bug 1462784)
Backed out changeset a543b94b049a (bug 1462784)
Backed out changeset d1ca8b0f2221 (bug 1462784)
Backed out changeset 68eabfbf3c16 (bug 1462784)
Backed out changeset 34e71c789903 (bug 1462784)
Backed out changeset 6fe79d1ca1bd (bug 1462784)
Backed out changeset e5ad2e525ea9 (bug 1462784)
Backed out changeset 329645ff1e23 (bug 1462784)
Backed out changeset e09c38853172 (bug 1462784)
Backed out changeset 0663d1a6d2da (bug 1462784)
Backed out changeset 106967fc29d2 (bug 1462784)
Backed out changeset 99b4a433a8e5 (bug 1462784)
Backed out changeset 1d38a4cf5a4a (bug 1462784)
Backed out changeset 692017229de6 (bug 1462784)
Backed out changeset c2911a626671 (bug 1462784)
2018-06-01 23:42:00 +03:00
Markus Stange
07dd399187 Bug 1462784 - Annotate idle stacks in the native event loop on Windows. r=froydnj
MozReview-Commit-ID: A0c3ZLLkLUC
2018-05-18 18:59:05 -04:00
Noemi Erli
3946d17555 Backed out 18 changesets (bug 1462784) for failures in devtools/client/performance/test/unit/test_tree-model-08.js on a CLOSED TREE
Backed out changeset a74d36598442 (bug 1462784)
Backed out changeset c8192175f360 (bug 1462784)
Backed out changeset cde492240e99 (bug 1462784)
Backed out changeset 8c8d30fa406c (bug 1462784)
Backed out changeset ad3802ffb780 (bug 1462784)
Backed out changeset 2fe10732076c (bug 1462784)
Backed out changeset 268a72b7c3c4 (bug 1462784)
Backed out changeset 4055eb6c3bc6 (bug 1462784)
Backed out changeset 3901070e2e60 (bug 1462784)
Backed out changeset 2faf787fbbdf (bug 1462784)
Backed out changeset 8f06963c7c6f (bug 1462784)
Backed out changeset 036e6f64e224 (bug 1462784)
Backed out changeset e670f156a603 (bug 1462784)
Backed out changeset cd39588aece4 (bug 1462784)
Backed out changeset 2ac65d100fa2 (bug 1462784)
Backed out changeset ea05ff70a51d (bug 1462784)
Backed out changeset 8a06c0ba42f7 (bug 1462784)
Backed out changeset 52ed9a039ad2 (bug 1462784)
2018-06-01 01:06:29 +03:00
Markus Stange
e4915670ef Bug 1462784 - Annotate idle stacks in the native event loop on Windows. r=froydnj
MozReview-Commit-ID: A0c3ZLLkLUC
2018-05-18 18:59:05 -04:00
Dorel Luca
c84bdccc19 Backed out changeset da12c077747f (bug 1448040) for Android build bustage on build/src/obj-firefox/dist/include/mozilla/HangAnnotations.h. CLOSED TREE 2018-05-25 20:13:26 +03:00
Doug Thayer
c6c9d870ab Bug 1448040 - Remove HangMonitor/ChromeHangs r=Nika
Fairly straightforward, just a blanket removal. Haven't heard
anything on dev-platform or fx-data-dev regarding this removal,
so I think it's likely safe to remove on Nightly, and we can
revert if anyone makes a fuss.

As part of removing the HangMonitor, I renamed a few things and
reorganized the namespaces to not depend on a HangMonitor
namespace. Hopefully this doesn't produce too much noise in the
diff, it just seemed appropriate to move everything around
rather than keep dangling vestiges of the old system.

MozReview-Commit-ID: 8C8NFnOP5GU
2018-04-29 18:21:20 -07:00
Bob Owen
c5a598de84 Bug 1396984: When not generally processing native events, do single message pumps instead. r=jimm
We still get occasional messages for the internal OLE Main Thread window.
Also, the PeekMessage call allows internal windows messages to be processed for
things like GDI.
2018-02-14 19:18:47 +00:00
Aaron Klotz
8abb231909 Bug 1424505: Block osk.exe from UIA instantiation; r=Jamie 2018-02-20 12:24:47 -07:00
Chris Peterson
677bf4030c Bug 1428535 - Add missing override specifiers to overridden virtual functions. r=froydnj
MozReview-Commit-ID: DCPTnyBooIe
2017-11-05 19:37:28 -08:00
Aaron Klotz
ee6d631a4a Bug 1423999: Improved UIA detection that eliminates handle duplication; r=Jamie
MozReview-Commit-ID: 5CqjkyDoPs8
2017-12-07 12:13:14 -07:00
Aaron Klotz
675135dbb8 Bug 1424317: Unconditionally remove UIA hook once UIA detection has run; r=jimm
MozReview-Commit-ID: I8pQ3GItBlF
2017-12-08 11:09:11 -07:00
Bob Owen
dfa9cc06d0 Bug 1423644: Don't create the nsAppShell hidden message window, when not using native event processing. r=jimm 2017-12-07 10:25:09 +00:00
Aaron Klotz
36e61fdb95 Bug 1419886: Part 1 - Add hooks for UIA detection to nsAppShell; r=jimm
MozReview-Commit-ID: 5p4kZDHcQGn
2017-12-04 17:53:13 -07:00
Gabriele Svelto
212ac842bf Bug 1402519 - Remove MOZ_CRASHREPORTER directives from widget; r=froydnj 2017-11-23 10:59:04 +01:00
shindli
f90a73f3c0 Backed out 16 changesets (bug 1402519) for conflicts during merge r=backout on a CLOSED TREE
Backed out changeset 07fcf163241a (bug 1402519)
Backed out changeset c6d2ad45d8e2 (bug 1402519)
Backed out changeset 8a3caca61294 (bug 1402519)
Backed out changeset 01425eae2c48 (bug 1402519)
Backed out changeset cf298d3815de (bug 1402519)
Backed out changeset e1964f4389cd (bug 1402519)
Backed out changeset f405337f3569 (bug 1402519)
Backed out changeset a76356fd3359 (bug 1402519)
Backed out changeset d3bb350d1c34 (bug 1402519)
Backed out changeset 9d3bfd9f932c (bug 1402519)
Backed out changeset e3dd6e5b073f (bug 1402519)
Backed out changeset e801b0c00134 (bug 1402519)
Backed out changeset 8a4139fa5dca (bug 1402519)
Backed out changeset 8d01c14ac1ca (bug 1402519)
Backed out changeset 24e0dcd01898 (bug 1402519)
Backed out changeset f8fdf450613f (bug 1402519)
2017-11-23 00:11:44 +02:00
Gabriele Svelto
e8381601dc Bug 1402519 - Remove MOZ_CRASHREPORTER directives from widget; r=froydnj
This does not remove the directives in widget/ContentCache.cpp as those crash
annotations should be temporary and will be removed once bug 1405832 is fixed.

MozReview-Commit-ID: F0STyYDx8F4
2017-10-10 16:04:47 +02:00
Nicholas Nethercote
a35e82f193 Bug 1403868 (part 4) - Reduce tools/profiler/public/*.h to almost nothing in non-MOZ_GECKO_PROFILER builds. r=mstange.
Currently the Gecko Profiler defines a moderate amount of stuff when
MOZ_GECKO_PROFILER is undefined. It also #includes various headers, including
JS ones. This is making it difficult to separate Gecko's media stack for
inclusion in Servo.

This patch greatly simplifies how things are exposed. The starting point is:

- GeckoProfiler.h can be #included unconditionally;

- everything else from the profiler must be guarded by MOZ_GECKO_PROFILER.

In practice this introduces way too many #ifdefs, so the patch loosens it by
adding no-op macros for a number of the most common operations.

The net result is that #ifdefs and macros are used a bit more, but almost
nothing is exposed in non-MOZ_GECKO_PROFILER builds (including
ProfilerMarkerPayload.h and GeckoProfiler.h), and understanding what is exposed
is much simpler than before.

Note also that in BHR, ThreadStackHelper is now entirely absent in
non-MOZ_GECKO_PROFILER builds.
2017-10-04 09:11:18 +11:00
Alastor Wu
6c3ba5f12b Bug 1373888 - part7 : modify platform wakelocks. r=cpearce,snorp,spohl
* OSX
Make the lock of the type kIOPMAssertionTypeNoDisplaySleep and kIOPMAssertionTypeNoIdleSleep
as a singleton. Won't need to require an extra lock.

* Windows
Add |mRequireForDisplay| to ensure the "audio-playing" won't overwrite the previous
display requirement.

* Android
Add "audio-playing" and "video-playing", and make sure the audio-lock won't be cancel
when receiving "WakeLockDelegate.STATE_LOCKED_BACKGROUND".

MozReview-Commit-ID: 97oNX7H2qij
2017-08-29 15:28:23 +08:00
Alastor Wu
55743ce32f Bug 1373888 - part4 : request non-display wake lock for audio playing. r=cpearce,spohl
According to [1], kIOPMAssertionTypeNoDisplaySleep prevents display sleep and
kIOPMAssertionTypeNoIdleSleep prevents idle sleep.

We should use kIOPMAssertionTypeNoIdleSleep for audio playing, because it won't
need to block the display.

[1] https://developer.apple.com/library/content/qa/qa1340/_index.html

---

On Windows, ES_DISPLAY_REQUIRED forces display on, and ES_SYSTEM_REQUIRED forces
system on working state [2].

[2] https://msdn.microsoft.com/zh-tw/library/windows/desktop/aa373208(v=vs.85).aspx

MozReview-Commit-ID: Izs29PdzQOW
2017-08-29 15:25:34 +08:00
Alastor Wu
625653c168 Bug 1373888 - part3 : rename the topic of the wake lock. r=cpearce
For knowing the wake lock usage more clearly, we should use more specific topic name.

In OSX, you can use "$ pmset -g assertions" to check all the wakelock.
In Windows, using "$ powser -energy" to generate the energy report.

MozReview-Commit-ID: rAXnkxTvLc
2017-08-29 10:54:28 +08:00
Chris Pearce
1b0d5feaf3 Bug 1387219 - Remove code WakeLockListener support on XP and Vista. r=aklotz
billm reports that the runnable in this code is firing a lot, and since we
don't support XP/Vista we're not benefiting from this overhead.

MozReview-Commit-ID: Bpw1E9DxPpD
2017-08-04 11:44:29 +12:00
Michael Smith
bb3029d90b Bug 1373739 - Hook HeadlessSound and HeadlessScreenHelper into Windows widgets. r=bdahl
MozReview-Commit-ID: 1KOlPyLmJaY
2017-07-11 14:01:00 -07:00
Bill McCloskey
ba4c30b16d Bug 1385413 - Remove thread parameter from onDispatchedEvent (r=erahm)
This parameter isn't used by any implementation of onDispatchedEvent,
and keeping the parameter makes later refactorings in this bug more difficult.

MozReview-Commit-ID: 90VY2vYtwCW
2017-07-28 13:09:06 -07:00
Bevis Tseng
59627df038 Bug 1382172 - Name nsITimerCallback instances in native implementation. r=billm 2017-07-27 02:18:20 +08:00
Nicholas Nethercote
9ae0762bf5 Bug 1370329 (part 1) - Clean up the profiler's RAII classes. r=mstange.
This patch does the following renamings, which increase consistency.

- GeckoProfilerInitRAII -> AutoProfilerInit
- GeckoProfilerThread{Sleep,Wake}RAII -> AutoProfilerThread{Sleep,Wake}
- GeckoProfilerTracingRAII -> AutoProfilerTracing
- AutoProfilerRegister -> AutoProfilerRegisterThread
- ProfilerStackFrameRAII -> AutoProfilerLabel
- nsJSUtils::mProfilerRAII -> nsJSUtils::mAutoProfilerLabel

Plus a few other minor ones (e.g. local variables).

The patch also add MOZ_GUARD_OBJECT macros to all the profiler RAII classes
that lack them, and does some minor whitespace reformatting.
2017-06-07 12:33:19 +10:00
Gaith
1100bc7625 Bug 1219464 - Replace PRLogModuleInfo usage with LazyLogModule in widget/. r=erahm
MozReview-Commit-ID: Ge7I8YlNqgM
2016-05-18 22:55:42 +03:00
Kan-Ru Chen
3659552119 Bug 1194751 - Part 7. Implement ScreenHelperWin and delete old nsScreenManagerWin/nsScreenWin. r=jimm
ScreenHelperWin is the platform dependent part of the original
nsScreenManagerWin and nsScreenWin. It listens the WM_DISPLAYCHANGE
message and pushes updates to ScreenManager. See patch part 4. for how
ScreenManager works.

MozReview-Commit-ID: 20A3ZQKmH9a
2017-03-09 19:32:31 +08:00
Bob Owen
a28888f2c0 Bug 1152353: Repost printer properties completion messages after nsAppShell::ProcessNextNativeEvent. r=jimm 2017-03-15 15:55:50 +00:00
Aaron Klotz
2239ebde46 Bug 1341915: Make win32 nsAppShell's event window message-only; r=jimm
MozReview-Commit-ID: C9gL90RUIcm
2017-02-22 16:24:29 -07:00
Nicholas Nethercote
401f105d67 Bug 1339327 (part 5) - Rename some profiler functions related to sleeping. r=mstange.
The new names make it clearer that these actions apply to just one thread.

- profiler_sleep_start() --> profiler_thread_sleep()
- profiler_sleep_end()   --> profiler_thread_wake()
- profiler_is_sleeping() --> profiler_thread_is_sleeping()
- GeckoProfilerSleepRAII --> GeckoProfilerThreadSleepRAII
- GeckoProfilerWakeRAII  --> GeckoProfilerThreadWakeRAII
2017-02-15 14:26:23 +11:00
Nicholas Nethercote
0550795f93 Bug 1293117 (part 4) - Change many NS_IMETHODIMP occurrences to NS_IMETHOD. r=froydnj.
This patch makes the following changes on many in-class methods.

- NS_IMETHODIMP F() override;      --> NS_IMETHOD F() override;
- NS_IMETHODIMP F() override {...} --> NS_IMETHOD F() override {...}
- NS_IMETHODIMP F() final;         --> NS_IMETHOD F() final;
- NS_IMETHODIMP F() final {...}    --> NS_IMETHOD F() final {...}

Using NS_IMETHOD is the preferred way of marking in-class virtual methods.
Although these transformations add an explicit |virtual|, they are safe --
there's an implicit |virtual| anyway because |override| and |final| only work
with virtual methods.
2016-08-08 10:54:47 +10:00
Jim Mathies
a6a7ee58cc Bug 1041599 - Maintain a single volume control session between browser, content, and plugins on Windows. r=aklotz
MozReview-Commit-ID: 2LuYciKfsWn
2016-03-13 08:25:23 -05:00
Chris Pearce
357fa8ce3a Bug 1193610 - Also use SystemParametersInfo to block screen saver on Windows, so it works on WinXP and Vista. r=jimm 2015-10-27 11:58:15 +13:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Jacek Caban
21973c0e7e Bug 1133818 - Fixed GCC warnings in widget/windows. r=jmathies 2015-02-23 12:15:53 +01:00
Chris Pearce
59b6b86315 Bug 1063995 - Disable the screen saver on Windows only on the 'screen' topic. r=edwin 2014-09-15 17:05:45 +12:00
Ehsan Akhgari
6e084eaa1f Bug 1038196 - Give WinWakeLockListener a private destructor; r=bjacob 2014-07-15 16:38:31 -04:00
Birunthan Mohanathas
7c5f901fae Bug 869836 - Part 4: Use EqualsLiteral instead of Equals(NS_LITERAL_STRING(...)). r=ehsan 2014-05-22 06:48:51 +03:00
Nicholas Cameron
5c9c785a58 Bug 896896. Use MsgWaitForMultipleObjectsEx instead of WaitMessage. r=roc 2013-07-31 08:51:45 +12:00
Bas Schouten
b55c6b1c2f Bug 1009590: Deal with non-ui-thread IPDL usage on Windows. r=bent 2014-05-18 05:16:51 +02:00
Birunthan Mohanathas
eeb9aaaa94 Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
Chris Pearce
769a95e926 Bug 992105 - Remember topics for screensaver lock in Windows WakeLockListener, so that toggling fullscreen while playing video doesn't prevent screen wakelock being unlocked. r=padenot 2014-04-09 16:45:00 +12:00
Phil Ringnalda
9e269c94bd Back out a28cd2a8b397 (bug 992105) for Windows build bustage 2014-04-07 22:42:19 -07:00
Chris Pearce
958d992801 Bug 992105 - Remember topics for screensaver lock in Windows WakeLockListener, so that toggling fullscreen while playing video doesn't prevent screen wakelock being unlocked. r=edwin 2014-04-08 16:59:37 +12:00
Viktor Stanchev
66b109581f Bug 963158 - Profiler shouldn't sample sleeping threads multiple times. r=bgirard,roc,bent,froydnj 2014-03-28 16:08:22 -04:00