fixes #28198
This commit is contained in:
parent
dca7ae6908
commit
9f0ba70700
|
@ -435,17 +435,17 @@ export class Thread implements IThread {
|
|||
* Only fetches the first stack frame for performance reasons. Calling this method consecutive times
|
||||
* gets the remainder of the call stack.
|
||||
*/
|
||||
public fetchCallStack(): TPromise<void> {
|
||||
public fetchCallStack(smartFetch = true): TPromise<void> {
|
||||
if (!this.stopped) {
|
||||
return TPromise.as(null);
|
||||
}
|
||||
|
||||
if (!this.fetchPromise) {
|
||||
if (!this.fetchPromise && smartFetch) {
|
||||
this.fetchPromise = this.getCallStackImpl(0, 1).then(callStack => {
|
||||
this.callStack = callStack || [];
|
||||
});
|
||||
} else {
|
||||
this.fetchPromise = this.fetchPromise.then(() => this.getCallStackImpl(this.callStack.length, 20).then(callStackSecondPart => {
|
||||
this.fetchPromise = (this.fetchPromise || TPromise.as(null)).then(() => this.getCallStackImpl(this.callStack.length, 20).then(callStackSecondPart => {
|
||||
this.callStack = this.callStack.concat(callStackSecondPart);
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -355,7 +355,7 @@ export class CallStackDataSource implements IDataSource {
|
|||
|
||||
public getChildren(tree: ITree, element: any): TPromise<any> {
|
||||
if (element instanceof Thread) {
|
||||
return TPromise.as(this.getThreadChildren(element));
|
||||
return this.getThreadChildren(element);
|
||||
}
|
||||
if (element instanceof Model) {
|
||||
return TPromise.as(element.getProcesses());
|
||||
|
@ -365,25 +365,25 @@ export class CallStackDataSource implements IDataSource {
|
|||
return TPromise.as(process.getAllThreads());
|
||||
}
|
||||
|
||||
private getThreadChildren(thread: Thread): any[] {
|
||||
private getThreadChildren(thread: Thread): TPromise<any> {
|
||||
const callStack: any[] = thread.getCallStack();
|
||||
if (!callStack) {
|
||||
return [];
|
||||
if (!callStack || !callStack.length) {
|
||||
return thread.fetchCallStack(false).then(() => thread.getCallStack());
|
||||
}
|
||||
if (callStack.length === 1) {
|
||||
// To reduce flashing of the call stack view simply append the stale call stack
|
||||
// once we have the correct data the tree will refresh and we will no longer display it.
|
||||
return callStack.concat(thread.getStaleCallStack().slice(1));
|
||||
return TPromise.as(callStack.concat(thread.getStaleCallStack().slice(1)));
|
||||
}
|
||||
|
||||
if (thread.stoppedDetails && thread.stoppedDetails.framesErrorMessage) {
|
||||
return callStack.concat([thread.stoppedDetails.framesErrorMessage]);
|
||||
return TPromise.as(callStack.concat([thread.stoppedDetails.framesErrorMessage]));
|
||||
}
|
||||
if (thread.stoppedDetails && thread.stoppedDetails.totalFrames > callStack.length && callStack.length > 1) {
|
||||
return callStack.concat([new ThreadAndProcessIds(thread.process.getId(), thread.threadId)]);
|
||||
return TPromise.as(callStack.concat([new ThreadAndProcessIds(thread.process.getId(), thread.threadId)]));
|
||||
}
|
||||
|
||||
return callStack;
|
||||
return TPromise.as(callStack);
|
||||
}
|
||||
|
||||
public getParent(tree: ITree, element: any): TPromise<any> {
|
||||
|
|
Loading…
Reference in a new issue