- Attempting to remedy high CPU use when dragging around card panels.

This commit is contained in:
Agetian
2017-01-25 14:00:20 +00:00
parent 7416cc8fff
commit b45ae80f6e
3 changed files with 33 additions and 7 deletions

View File

@@ -492,10 +492,13 @@ public class TargetingOverlay {
// An "initialized"-type variable is needed since we can't initialize on construction // An "initialized"-type variable is needed since we can't initialize on construction
// (because CardPanelContainers aren't ready at that point) // (because CardPanelContainers aren't ready at that point)
private boolean isListening = false; private boolean isListening = false;
private boolean isDragged = false;
public boolean getIsListening() { return isListening; } public boolean getIsListening() { return isListening; }
public void setIsListening(boolean listening) { isListening = listening; } public void setIsListening(boolean listening) { isListening = listening; }
private void assembleAndRepaint() { private void assembleAndRepaint() {
if (isDragged) { return; }
final GameView gameView = matchUI.getGameView(); final GameView gameView = matchUI.getGameView();
if (gameView != null) { if (gameView != null) {
assembleArcs(gameView.getCombat(), true); // Force update despite timer assembleArcs(gameView.getCombat(), true); // Force update despite timer
@@ -514,16 +517,19 @@ public class TargetingOverlay {
public void mouseOut(CardPanel panel, MouseEvent evt) { public void mouseOut(CardPanel panel, MouseEvent evt) {
assembleAndRepaint(); assembleAndRepaint();
} }
// Do not aggressively assemble/repaint when dragging around card panels
@Override
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) { isDragged = true; }
@Override
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) { isDragged = false; }
// We don't need the other mouse events the interface provides; stub them out // We don't need the other mouse events the interface provides; stub them out
@Override @Override
public void mouseLeftClicked(CardPanel panel, MouseEvent evt) {} public void mouseLeftClicked(CardPanel panel, MouseEvent evt) {}
@Override @Override
public void mouseRightClicked(CardPanel panel, MouseEvent evt) {} public void mouseRightClicked(CardPanel panel, MouseEvent evt) {}
@Override @Override
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) {}
@Override
public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {} public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {}
@Override
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) {}
} }
} }

View File

@@ -57,6 +57,7 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
private int actualCardsPerRow; private int actualCardsPerRow;
private int mouseDragStartX; private int mouseDragStartX;
private int mouseDragStartY; private int mouseDragStartY;
private boolean isDragged;
private boolean isVertical; private boolean isVertical;
private boolean hasScrollbars; private boolean hasScrollbars;
@@ -222,7 +223,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
this.getParent().validate(); this.getParent().validate();
} }
super.doLayout(); if (!isDragged) {
super.doLayout();
}
} }
@Override @Override
@@ -237,6 +240,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
@Override @Override
public final void mouseDragStart(final CardPanel dragPanel, final MouseEvent evt) { public final void mouseDragStart(final CardPanel dragPanel, final MouseEvent evt) {
this.isDragged = true;
super.setDragged(true);
super.mouseDragStart(dragPanel, evt); super.mouseDragStart(dragPanel, evt);
this.mouseDragStartX = dragPanel.getCardX(); this.mouseDragStartX = dragPanel.getCardX();
@@ -284,6 +290,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
@Override @Override
public final void mouseDragEnd(final CardPanel dragPanel, final MouseEvent evt) { public final void mouseDragEnd(final CardPanel dragPanel, final MouseEvent evt) {
this.isDragged = false;
super.setDragged(false);
super.mouseDragEnd(dragPanel, evt); super.mouseDragEnd(dragPanel, evt);
this.doLayout(); this.doLayout();
final JLayeredPane layeredPane = SwingUtilities.getRootPane(CardPanel.getDragAnimationPanel()).getLayeredPane(); final JLayeredPane layeredPane = SwingUtilities.getRootPane(CardPanel.getDragAnimationPanel()).getLayeredPane();

View File

@@ -63,6 +63,7 @@ public abstract class CardPanelContainer extends SkinnedPanel {
private int mouseDragOffsetX, mouseDragOffsetY; private int mouseDragOffsetX, mouseDragOffsetY;
private int intialMouseDragX = -1, intialMouseDragY; private int intialMouseDragX = -1, intialMouseDragY;
private boolean dragEnabled; private boolean dragEnabled;
private boolean isDragged;
private final List<LayoutEventListener> layoutListeners = new ArrayList<>(1); private final List<LayoutEventListener> layoutListeners = new ArrayList<>(1);
@@ -364,6 +365,14 @@ public abstract class CardPanelContainer extends SkinnedPanel {
this.dragEnabled = dragEnabled; this.dragEnabled = dragEnabled;
} }
public final boolean isDragged() {
return this.isDragged;
}
public final void setDragged(boolean isDragged) {
this.isDragged = isDragged;
}
public final void addCardPanelMouseListener(final CardPanelMouseListener listener) { public final void addCardPanelMouseListener(final CardPanelMouseListener listener) {
this.listeners.add(listener); this.listeners.add(listener);
} }
@@ -429,8 +438,10 @@ public abstract class CardPanelContainer extends SkinnedPanel {
private void doingLayout() { private void doingLayout() {
// Inform listeners we're doing layout // Inform listeners we're doing layout
for (LayoutEventListener listener : layoutListeners) { if (!this.isDragged) {
listener.doingLayout(); for (LayoutEventListener listener : layoutListeners) {
listener.doingLayout();
}
} }
} }