Skip to content

Commit d85811d

Browse files
authored
Merge pull request #12603 from jklymak/fix-dont-import-macosx
FIX: don't import macosx to check if eventloop running
2 parents 0b9a3e7 + bc7059e commit d85811d

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

lib/matplotlib/backends/__init__.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ def _get_running_interactive_framework():
4747
if frame.f_code == tkinter.mainloop.__code__:
4848
return "tk"
4949
frame = frame.f_back
50-
try:
51-
from matplotlib.backends import _macosx
52-
except ImportError:
53-
pass
54-
else:
55-
if _macosx.event_loop_is_running():
50+
if 'matplotlib.backends._macosx' in sys.modules:
51+
if sys.modules["matplotlib.backends._macosx"].event_loop_is_running():
5652
return "macosx"
5753
if sys.platform.startswith("linux") and not os.environ.get("DISPLAY"):
5854
return "headless"

src/_macosx.m

+12
Original file line numberDiff line numberDiff line change
@@ -2580,9 +2580,21 @@ static bool verify_framework(void)
25802580
ProcessSerialNumber psn;
25812581
/* These methods are deprecated, but they don't require the app to
25822582
have started */
2583+
#ifdef COMPILING_FOR_10_6
2584+
NSApp = [NSApplication sharedApplication];
2585+
NSApplicationActivationPolicy activationPolicy = [NSApp activationPolicy];
2586+
switch (activationPolicy) {
2587+
case NSApplicationActivationPolicyRegular:
2588+
case NSApplicationActivationPolicyAccessory:
2589+
return true;
2590+
case NSApplicationActivationPolicyProhibited:
2591+
break;
2592+
}
2593+
#else
25832594
if (CGMainDisplayID()!=0
25842595
&& GetCurrentProcess(&psn)==noErr
25852596
&& SetFrontProcess(&psn)==noErr) return true;
2597+
#endif
25862598
PyErr_SetString(PyExc_ImportError,
25872599
"Python is not installed as a framework. The Mac OS X backend will "
25882600
"not be able to function correctly if Python is not installed as a "

0 commit comments

Comments
 (0)