mirror of
https://github.com/magefree/mage.git
synced 2025-12-29 23:12:10 -08:00
Performance: fixed memory leaks on each card viewer or draft open (10 Mb per call, related to #11285, fixes #9548)
This commit is contained in:
parent
ce311fd691
commit
36ccfb0a2a
13 changed files with 44 additions and 10 deletions
|
|
@ -62,10 +62,19 @@ public enum ExpansionRepository {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning, don't forget to unsubscribe due memory leak problems
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void subscribe(Listener<RepositoryEvent> listener) {
|
||||
eventSource.addListener(listener);
|
||||
}
|
||||
|
||||
public void unsubscribe(Listener<RepositoryEvent> listener) {
|
||||
eventSource.removeListener(listener);
|
||||
}
|
||||
|
||||
public void saveSets(final List<ExpansionInfo> newSets, final List<ExpansionInfo> updatedSets, long newContentVersion) {
|
||||
try {
|
||||
expansionDao.callBatchTasks(() -> {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,12 @@ public class RepositoryEventSource implements EventSource<RepositoryEvent>, Seri
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListener() {
|
||||
public void removeListener(Listener<RepositoryEvent> listener) {
|
||||
dispatcher.removeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListeners() {
|
||||
dispatcher.removeAllListener();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
|
||||
|
||||
package mage.game.events;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
* TODO: there are duplicated interfaces of EventSource, must combine in single
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
* @param <E>
|
||||
*/
|
||||
public interface EventSource<E extends ExternalEvent> extends Serializable {
|
||||
|
||||
void addListener(Listener<E> listener);
|
||||
|
||||
void removeListener(Listener<E> listener);
|
||||
|
||||
void removeAllListener();
|
||||
void removeAllListeners();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,12 @@ public class PlayerQueryEventSource implements EventSource<PlayerQueryEvent>, Se
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListener() {
|
||||
public void removeListener(Listener<PlayerQueryEvent> listener) {
|
||||
dispatcher.removeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListeners() {
|
||||
dispatcher.removeAllListener();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,12 @@ public class TableEventSource implements EventSource<TableEvent>, Serializable {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListener() {
|
||||
public void removeListener(Listener<TableEvent> listener) {
|
||||
dispatcher.removeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllListeners() {
|
||||
dispatcher.removeAllListener();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue