From c0ce0a2b8cfc581d5f39c05009dfba5ab5905059 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Thu, 9 Apr 2015 16:21:45 +0200 Subject: [PATCH] Bug 313431 - The Binaries folder in the C/C++ view disappears sometime Change-Id: Iccde8b904de9ba4083ecd0471f9e14e12b54e62e Signed-off-by: Anton Leherbauer --- .../internal/core/model/ArchiveContainer.java | 16 +++++++++++++++- .../internal/core/model/BinaryContainer.java | 18 ++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java index 34a6d54e3e8..201c3c74f41 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/ArchiveContainer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 QNX Software Systems and others. + * Copyright (c) 2000, 2015 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -39,6 +39,20 @@ public class ArchiveContainer extends Openable implements IArchiveContainer { return a; } + @Override + public CElementInfo getElementInfo(IProgressMonitor monitor) throws CModelException { + CModelManager manager = CModelManager.getDefault(); + synchronized (manager) { + CElementInfo info = (CElementInfo) manager.getInfo(this); + if (info != null) { + return info; + } + info = createElementInfo(); + openWhenClosed(info, monitor); + return info; + } + } + @Override public CElementInfo createElementInfo() { return new ArchiveContainerInfo(this); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java index f1f548a59a7..f79bdae9188 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/BinaryContainer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 QNX Software Systems and others. + * Copyright (c) 2000, 2015 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -31,7 +31,7 @@ public class BinaryContainer extends Openable implements IBinaryContainer { super (cProject, null, CCorePlugin.getResourceString("CoreModel.BinaryContainer.Binaries"), ICElement.C_VCONTAINER); //$NON-NLS-1$ } - synchronized void sync() { + void sync() { BinaryRunner runner = CModelManager.getDefault().getBinaryRunner(getCProject()); if (runner != null) { runner.waitIfRunning(); @@ -56,6 +56,20 @@ public class BinaryContainer extends Openable implements IBinaryContainer { return b; } + @Override + public CElementInfo getElementInfo(IProgressMonitor monitor) throws CModelException { + CModelManager manager = CModelManager.getDefault(); + synchronized (manager) { + CElementInfo info = (CElementInfo) manager.getInfo(this); + if (info != null) { + return info; + } + info = createElementInfo(); + openWhenClosed(info, monitor); + return info; + } + } + @Override public CElementInfo createElementInfo() { return new BinaryContainerInfo(this);