mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-84162 do not regenerate R.java if resource files were not changed at all
This commit is contained in:
@@ -115,6 +115,7 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
private final Object myClassMapLock = new Object();
|
||||
|
||||
private final Set<AndroidAutogeneratorMode> myDirtyModes = EnumSet.noneOf(AndroidAutogeneratorMode.class);
|
||||
private final Set<AndroidAutogeneratorMode> myGeneratedWithErrorsModes = EnumSet.noneOf(AndroidAutogeneratorMode.class);
|
||||
private final Map<AndroidAutogeneratorMode, Set<String>> myAutogeneratedFiles = new HashMap<AndroidAutogeneratorMode, Set<String>>();
|
||||
|
||||
private volatile boolean myAutogenerationEnabled = false;
|
||||
@@ -141,9 +142,16 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
regenerate = regenerate || isGeneratedFileRemoved(mode);
|
||||
|
||||
if (myAutogenerationEnabled && regenerate) {
|
||||
if (AndroidCompileUtil.doGenerate(getModule(), mode)) {
|
||||
synchronized (myDirtyModes) {
|
||||
myDirtyModes.remove(mode);
|
||||
final boolean result = AndroidCompileUtil.doGenerate(getModule(), mode);
|
||||
|
||||
synchronized (myDirtyModes) {
|
||||
myDirtyModes.remove(mode);
|
||||
|
||||
if (result) {
|
||||
myGeneratedWithErrorsModes.remove(mode);
|
||||
}
|
||||
else {
|
||||
myGeneratedWithErrorsModes.add(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -817,4 +825,10 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
myDirtyModes.add(mode);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean areSourcesGeneratedWithErrors(@NotNull AndroidAutogeneratorMode mode) {
|
||||
synchronized (myDirtyModes) {
|
||||
return myGeneratedWithErrorsModes.contains(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +166,8 @@ class AndroidResourceFilesListener extends VirtualFileAdapter {
|
||||
AndroidCompileUtil.collectAllResources(myFacet, resourceSet);
|
||||
|
||||
synchronized (RESOURCES_SET_LOCK) {
|
||||
if (resourceSet.equals(myResourceSet)) {
|
||||
if (resourceSet.equals(myResourceSet) &&
|
||||
!myFacet.areSourcesGeneratedWithErrors(AndroidAutogeneratorMode.AAPT)) {
|
||||
return;
|
||||
}
|
||||
myResourceSet = resourceSet;
|
||||
|
||||
Reference in New Issue
Block a user