File JUCE8-revert-2727a2b1.patch of Package juce810

diff --git a/modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp b/modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp
index 47a8d14b..d656407a 100644
--- a/modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp
+++ b/modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp
@@ -288,76 +288,15 @@ public:
 
 private:
     //==============================================================================
-    class ComponentIsShowingListener : private ComponentMovementWatcher
-    {
-    public:
-        ComponentIsShowingListener (Component& componentIn, std::function<void()> callbackIn)
-            : ComponentMovementWatcher (&componentIn),
-              callback (std::move (callbackIn))
-        {}
-
-    private:
-        void componentMovedOrResized (bool, bool) override {}
-        void componentPeerChanged() override {}
-        void componentVisibilityChanged() override { NullCheckedInvocation::invoke (callback); }
-
-        using ComponentMovementWatcher::componentMovedOrResized;
-        using ComponentMovementWatcher::componentVisibilityChanged;
-
-        std::function<void()> callback;
-    };
-
-    class WindowMapper
-    {
-    public:
-        WindowMapper (Pimpl& pimplIn, Window& windowIn)
-            : pimpl (pimplIn),
-              window (windowIn)
-        {}
-
-        void update()
-        {
-            if (window == 0)
-                return;
-
-            const auto shouldBeMapped =    pimpl.getXEmbedMappedFlag()
-                                        && pimpl.owner.isShowing()
-                                        && pimpl.lastPeer != nullptr;
-
-            if (std::exchange (mapped, shouldBeMapped) != shouldBeMapped)
-            {
-                if (shouldBeMapped)
-                    X11Symbols::getInstance()->xMapWindow (pimpl.getDisplay(), window);
-                else
-                    X11Symbols::getInstance()->xUnmapWindow (pimpl.getDisplay(), window);
-            }
-        }
-
-        void unmap()
-        {
-            if (window == 0)
-                return;
-
-            X11Symbols::getInstance()->xUnmapWindow (pimpl.getDisplay(), window);
-            mapped = false;
-        }
-
-    private:
-        Pimpl& pimpl;
-        Window& window;
-        bool mapped = false;
-    };
-
     XEmbedComponent& owner;
-    ComponentIsShowingListener isShowingListener { owner, [this] { updateMapping(); } };
     Window client = 0, host = 0;
-    WindowMapper clientMapper { *this, client }, hostMapper { *this, host };
     Atom infoAtom, messageTypeAtom;
 
     bool clientInitiated;
     bool wantsFocus        = false;
     bool allowResize       = false;
     bool supportsXembed    = false;
+    bool hasBeenMapped     = false;
     int xembedVersion      = maxXEmbedVersionToSupport;
 
     ComponentPeer* lastPeer = nullptr;
@@ -430,8 +369,11 @@ private:
             int defaultScreen = X11Symbols::getInstance()->xDefaultScreen (dpy);
             Window root = X11Symbols::getInstance()->xRootWindow (dpy, defaultScreen);
 
-            hostMapper.unmap();
-            clientMapper.unmap();
+            if (hasBeenMapped)
+            {
+                X11Symbols::getInstance()->xUnmapWindow (dpy, client);
+                hasBeenMapped = false;
+            }
 
             X11Symbols::getInstance()->xReparentWindow (dpy, client, root, 0, 0);
             client = 0;
@@ -442,8 +384,20 @@ private:
 
     void updateMapping()
     {
-        hostMapper.update();
-        clientMapper.update();
+        if (client != 0)
+        {
+            const bool shouldBeMapped = getXEmbedMappedFlag();
+
+            if (shouldBeMapped != hasBeenMapped)
+            {
+                hasBeenMapped = shouldBeMapped;
+
+                if (shouldBeMapped)
+                    X11Symbols::getInstance()->xMapWindow (getDisplay(), client);
+                else
+                    X11Symbols::getInstance()->xUnmapWindow (getDisplay(), client);
+            }
+        }
     }
 
     Window getParentX11Window()
@@ -545,7 +499,7 @@ private:
             Rectangle<int> newBounds = getX11BoundsFromJuce();
 
             if (newPeer == nullptr)
-                hostMapper.unmap();
+                X11Symbols::getInstance()->xUnmapWindow (dpy, host);
 
             Window newParent = (newPeer != nullptr ? getParentX11Window() : rootWindow);
             X11Symbols::getInstance()->xReparentWindow (dpy, host, newParent, newBounds.getX(), newBounds.getY());
@@ -561,7 +515,7 @@ private:
                 }
 
                 componentMovedOrResized (owner, true, true);
-                updateMapping();
+                X11Symbols::getInstance()->xMapWindow (dpy, host);
 
                 broughtToFront();
             }
openSUSE Build Service is sponsored by