From e308c2f166c1d59b52fdf4226d1fdbb3f669c678 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 2 Oct 2013 19:00:16 +0000 Subject: [PATCH] Fix #36316: dots in cycles render on certain CPUs with 32 bit linux builds. There is some sort of problem with the SSE2 code path, but I couldn't find the cause, maybe a compiler bug due to the large amount of inlining? For now I've disabled SSE2 optimizatons in 32 bit GCC builds. --- intern/cycles/util/util_system.cpp | 3 ++- intern/ghost/intern/GHOST_SystemCocoa.mm | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/intern/cycles/util/util_system.cpp b/intern/cycles/util/util_system.cpp index 345c76bdfab..40ec93b6124 100644 --- a/intern/cycles/util/util_system.cpp +++ b/intern/cycles/util/util_system.cpp @@ -116,7 +116,8 @@ int system_cpu_bits() return (sizeof(void*)*8); } -#if defined(__x86_64__) || defined(_M_X64) || defined(i386) || defined(_M_IX86) +/* SSE optimization disabled for now on 32 bit GCC, see bug #36316 */ +#if defined(__x86_64__) || defined(_M_X64) || ((defined(i386) || defined(_M_IX86)) && !defined(__GNUC__)) struct CPUCapabilities { bool x64; diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 9cea4210769..770cfca6968 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1025,6 +1025,8 @@ GHOST_TSuccess GHOST_SystemCocoa::handleWindowEvent(GHOST_TEventType eventType, } switch (eventType) { case GHOST_kEventWindowClose: + // make window that should be closed frontmost + [window->getCocoaWindow() makeKeyAndOrderFront:nil]; // check for index of mainwindow as it would quit blender without dialog and discard if (window->getCocoaWindow() != [windowsList objectAtIndex:([windowsList count] - 1)]) { pushEvent( new GHOST_Event(getMilliSeconds(), GHOST_kEventWindowClose, window) );