Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisidor <inikolic@microsoft.com>2017-06-08 01:28:24 +0300
committerisidor <inikolic@microsoft.com>2017-06-08 01:36:25 +0300
commit376c52b955428d205459bea6619fc161fc8faacf (patch)
treef7ff07dda0be6c88a075843946e6de15e88c0424
parent586d578d0571f67525eb7dd412bc22d3f0b62b27 (diff)
fixes #281981.13.0
-rw-r--r--src/vs/workbench/parts/debug/common/debugModel.ts6
-rw-r--r--src/vs/workbench/parts/debug/electron-browser/debugViewer.ts16
2 files changed, 11 insertions, 11 deletions
diff --git a/src/vs/workbench/parts/debug/common/debugModel.ts b/src/vs/workbench/parts/debug/common/debugModel.ts
index 6d4f7691c3e..fa0229453bd 100644
--- a/src/vs/workbench/parts/debug/common/debugModel.ts
+++ b/src/vs/workbench/parts/debug/common/debugModel.ts
@@ -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);
}));
}
diff --git a/src/vs/workbench/parts/debug/electron-browser/debugViewer.ts b/src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
index 2d8ac9308df..259e9154d6a 100644
--- a/src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
+++ b/src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
@@ -354,7 +354,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());
@@ -364,25 +364,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> {