Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: debugger/QT/SkDebuggerGUI.cpp

Issue 839743003: debugger: SW rasterize the picture only when it changes (Closed) Base URL: https://skia.googlesource.com/skia.git@debugcanvas-stateless-draw-01-no-resize
Patch Set: address review comment Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « debugger/QT/SkDebuggerGUI.h ('k') | debugger/QT/SkDrawCommandGeometryWidget.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkDebuggerGUI.h" 8 #include "SkDebuggerGUI.h"
9 #include "SkForceLinking.h"
10 #include <QListWidgetItem>
11 #include "PictureRenderer.h" 9 #include "PictureRenderer.h"
10 #include "SkPictureData.h"
12 #include "SkPicturePlayback.h" 11 #include "SkPicturePlayback.h"
13 #include "SkPictureRecord.h" 12 #include "SkPictureRecord.h"
14 #include "SkPictureData.h" 13 #include <QListWidgetItem>
14 #include <QtGui>
15 15
16 #if defined(SK_BUILD_FOR_WIN32) 16 #if defined(SK_BUILD_FOR_WIN32)
17 #include "SysTimer_windows.h" 17 #include "SysTimer_windows.h"
18 #elif defined(SK_BUILD_FOR_MAC) 18 #elif defined(SK_BUILD_FOR_MAC)
19 #include "SysTimer_mach.h" 19 #include "SysTimer_mach.h"
20 #elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID) 20 #elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID)
21 #include "SysTimer_posix.h" 21 #include "SysTimer_posix.h"
22 #else 22 #else
23 #include "SysTimer_c.h" 23 #include "SysTimer_c.h"
24 #endif 24 #endif
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 } 210 }
211 } 211 }
212 212
213 void SkDebuggerGUI::actionClearDeletes() { 213 void SkDebuggerGUI::actionClearDeletes() {
214 for (int row = 0; row < fListWidget.count(); row++) { 214 for (int row = 0; row < fListWidget.count(); row++) {
215 QListWidgetItem* item = fListWidget.item(row); 215 QListWidgetItem* item = fListWidget.item(row);
216 item->setData(Qt::UserRole + 2, QPixmap(":/blank.png")); 216 item->setData(Qt::UserRole + 2, QPixmap(":/blank.png"));
217 fDebugger.setCommandVisible(row, true); 217 fDebugger.setCommandVisible(row, true);
218 fSkipCommands[row] = false; 218 fSkipCommands[row] = false;
219 } 219 }
220 if (this->isPaused()) { 220 this->updateImage();
221 fCanvasWidget.drawTo(fPausedRow);
222 } else {
223 fCanvasWidget.drawTo(fListWidget.currentRow());
224 }
225 } 221 }
226 222
227 void SkDebuggerGUI::actionClose() { 223 void SkDebuggerGUI::actionClose() {
228 this->close(); 224 this->close();
229 } 225 }
230 226
231 void SkDebuggerGUI::actionDelete() { 227 void SkDebuggerGUI::actionDelete() {
232 228
233 for (int row = 0; row < fListWidget.count(); ++row) { 229 for (int row = 0; row < fListWidget.count(); ++row) {
234 QListWidgetItem* item = fListWidget.item(row); 230 QListWidgetItem* item = fListWidget.item(row);
235 231
236 if (!item->isSelected()) { 232 if (!item->isSelected()) {
237 continue; 233 continue;
238 } 234 }
239 235
240 if (fDebugger.isCommandVisible(row)) { 236 if (fDebugger.isCommandVisible(row)) {
241 item->setData(Qt::UserRole + 2, QPixmap(":/delete.png")); 237 item->setData(Qt::UserRole + 2, QPixmap(":/delete.png"));
242 fDebugger.setCommandVisible(row, false); 238 fDebugger.setCommandVisible(row, false);
243 fSkipCommands[row] = true; 239 fSkipCommands[row] = true;
244 } else { 240 } else {
245 item->setData(Qt::UserRole + 2, QPixmap(":/blank.png")); 241 item->setData(Qt::UserRole + 2, QPixmap(":/blank.png"));
246 fDebugger.setCommandVisible(row, true); 242 fDebugger.setCommandVisible(row, true);
247 fSkipCommands[row] = false; 243 fSkipCommands[row] = false;
248 } 244 }
249 } 245 }
250 246
251 int currentRow = fListWidget.currentRow(); 247 this->updateImage();
252
253 if (this->isPaused()) {
254 fCanvasWidget.drawTo(fPausedRow);
255 } else {
256 fCanvasWidget.drawTo(currentRow);
257 }
258 } 248 }
259 249
260 #if SK_SUPPORT_GPU 250 #if SK_SUPPORT_GPU
261 void SkDebuggerGUI::actionGLSettingsChanged() { 251 void SkDebuggerGUI::actionGLSettingsChanged() {
262 bool isToggled = fSettingsWidget.isGLActive(); 252 bool isToggled = fSettingsWidget.isGLActive();
263 if (isToggled) { 253 if (isToggled) {
264 fCanvasWidget.setGLSampleCount(fSettingsWidget.getGLSampleCount()); 254 fCanvasWidget.setGLSampleCount(fSettingsWidget.getGLSampleCount());
265 } 255 }
266 fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kGPU_WidgetType, !isToggle d); 256 fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kGPU_WidgetType, !isToggle d);
267 } 257 }
(...skipping 16 matching lines...) Expand all
284 return; 274 return;
285 } 275 }
286 } 276 }
287 fListWidget.setCurrentRow(fListWidget.count() - 1); 277 fListWidget.setCurrentRow(fListWidget.count() - 1);
288 } 278 }
289 279
290 void SkDebuggerGUI::actionRasterSettingsChanged() { 280 void SkDebuggerGUI::actionRasterSettingsChanged() {
291 fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kRaster_8888_WidgetType, 281 fCanvasWidget.setWidgetVisibility(SkCanvasWidget::kRaster_8888_WidgetType,
292 !fSettingsWidget.isRasterEnabled()); 282 !fSettingsWidget.isRasterEnabled());
293 fDebugger.setOverdrawViz(fSettingsWidget.isOverdrawVizEnabled()); 283 fDebugger.setOverdrawViz(fSettingsWidget.isOverdrawVizEnabled());
294 fCanvasWidget.update(); 284 this->updateImage();
295 } 285 }
296 286
297 void SkDebuggerGUI::actionVisualizationsChanged() { 287 void SkDebuggerGUI::actionVisualizationsChanged() {
298 fDebugger.setMegaViz(fSettingsWidget.isMegaVizEnabled()); 288 fDebugger.setMegaViz(fSettingsWidget.isMegaVizEnabled());
299 fDebugger.setPathOps(fSettingsWidget.isPathOpsEnabled()); 289 fDebugger.setPathOps(fSettingsWidget.isPathOpsEnabled());
300 fDebugger.highlightCurrentCommand(fSettingsWidget.isVisibilityFilterEnabled( )); 290 fDebugger.highlightCurrentCommand(fSettingsWidget.isVisibilityFilterEnabled( ));
301 fCanvasWidget.drawTo(fListWidget.currentRow()); 291 this->updateImage();
302 } 292 }
303 293
304 void SkDebuggerGUI::actionTextureFilter() { 294 void SkDebuggerGUI::actionTextureFilter() {
305 SkPaint::FilterLevel level; 295 SkPaint::FilterLevel level;
306 bool enabled = fSettingsWidget.getFilterOverride(&level); 296 bool enabled = fSettingsWidget.getFilterOverride(&level);
307 fDebugger.setTexFilterOverride(enabled, level); 297 fDebugger.setTexFilterOverride(enabled, level);
308 fCanvasWidget.update(); 298 fCanvasWidget.update();
309 } 299 }
310 300
311 void SkDebuggerGUI::actionRewind() { 301 void SkDebuggerGUI::actionRewind() {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 void SkDebuggerGUI::actionStepForward() { 340 void SkDebuggerGUI::actionStepForward() {
351 int currentRow = fListWidget.currentRow(); 341 int currentRow = fListWidget.currentRow();
352 QString curRow = QString::number(currentRow); 342 QString curRow = QString::number(currentRow);
353 QString curCount = QString::number(fListWidget.count()); 343 QString curCount = QString::number(fListWidget.count());
354 if (currentRow < fListWidget.count() - 1) { 344 if (currentRow < fListWidget.count() - 1) {
355 fListWidget.setCurrentRow(currentRow + 1); 345 fListWidget.setCurrentRow(currentRow + 1);
356 } 346 }
357 } 347 }
358 348
359 void SkDebuggerGUI::drawComplete() { 349 void SkDebuggerGUI::drawComplete() {
350 SkString clipStack;
351 fDebugger.getClipStackText(&clipStack);
352 fInspectorWidget.setText(clipStack.c_str(), SkInspectorWidget::kClipStack_Ta bType);
353
360 fInspectorWidget.setMatrix(fDebugger.getCurrentMatrix()); 354 fInspectorWidget.setMatrix(fDebugger.getCurrentMatrix());
361 fInspectorWidget.setClip(fDebugger.getCurrentClip()); 355 fInspectorWidget.setClip(fDebugger.getCurrentClip());
362 } 356 }
363 357
364 void SkDebuggerGUI::saveToFile(const SkString& filename) { 358 void SkDebuggerGUI::saveToFile(const SkString& filename) {
365 SkFILEWStream file(filename.c_str()); 359 SkFILEWStream file(filename.c_str());
366 SkAutoTUnref<SkPicture> copy(fDebugger.copyPicture()); 360 SkAutoTUnref<SkPicture> copy(fDebugger.copyPicture());
367 361
368 copy->serialize(&file); 362 copy->serialize(&file);
369 } 363 }
(...skipping 21 matching lines...) Expand all
391 if (!filename.isEmpty()) { 385 if (!filename.isEmpty()) {
392 QFileInfo pathInfo(filename); 386 QFileInfo pathInfo(filename);
393 loadPicture(SkString(filename.toAscii().data())); 387 loadPicture(SkString(filename.toAscii().data()));
394 setupDirectoryWidget(pathInfo.path()); 388 setupDirectoryWidget(pathInfo.path());
395 } 389 }
396 fDirectoryWidgetActive = true; 390 fDirectoryWidgetActive = true;
397 } 391 }
398 392
399 void SkDebuggerGUI::pauseDrawing(bool isPaused) { 393 void SkDebuggerGUI::pauseDrawing(bool isPaused) {
400 fPausedRow = fListWidget.currentRow(); 394 fPausedRow = fListWidget.currentRow();
401 if (!fLoading) { 395 this->updateDrawCommandInfo();
402 fCanvasWidget.drawTo(fPausedRow);
403 }
404 } 396 }
405 397
406 void SkDebuggerGUI::updateDrawCommandInfo() { 398 void SkDebuggerGUI::updateDrawCommandInfo() {
407 int currentRow = -1; 399 int currentRow = -1;
408 if (!fLoading) { 400 if (!fLoading) {
409 currentRow = fListWidget.currentRow(); 401 currentRow = fListWidget.currentRow();
410 } 402 }
411 if (currentRow == -1) { 403 if (currentRow == -1) {
412 fInspectorWidget.setText("", SkInspectorWidget::kDetail_TabType); 404 fInspectorWidget.setText("", SkInspectorWidget::kDetail_TabType);
413 fInspectorWidget.setText("", SkInspectorWidget::kClipStack_TabType); 405 fInspectorWidget.setText("", SkInspectorWidget::kClipStack_TabType);
414 fCurrentCommandBox.setText(""); 406 fCurrentCommandBox.setText("");
415 fDrawCommandGeometryWidget.setDrawCommandIndex(-1); 407 fDrawCommandGeometryWidget.setDrawCommandIndex(-1);
416 } else { 408 } else {
417 if (!this->isPaused()) { 409 this->updateImage();
418 fCanvasWidget.drawTo(currentRow); 410
419 }
420 const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(currentR ow); 411 const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(currentR ow);
421 412
422 /* TODO(chudy): Add command type before parameters. Rename v 413 /* TODO(chudy): Add command type before parameters. Rename v
423 * to something more informative. */ 414 * to something more informative. */
424 if (currInfo) { 415 if (currInfo) {
425 QString info; 416 QString info;
426 info.append("<b>Parameters: </b><br/>"); 417 info.append("<b>Parameters: </b><br/>");
427 for (int i = 0; i < currInfo->count(); i++) { 418 for (int i = 0; i < currInfo->count(); i++) {
428 info.append(QString((*currInfo)[i]->c_str())); 419 info.append(QString((*currInfo)[i]->c_str()));
429 info.append("<br/>"); 420 info.append("<br/>");
430 } 421 }
431 fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabType); 422 fInspectorWidget.setText(info, SkInspectorWidget::kDetail_TabType);
432 } 423 }
433 424
434 SkString clipStack;
435 fDebugger.getClipStackText(&clipStack);
436 fInspectorWidget.setText(clipStack.c_str(), SkInspectorWidget::kClipStac k_TabType);
437
438 fCurrentCommandBox.setText(QString::number(currentRow)); 425 fCurrentCommandBox.setText(QString::number(currentRow));
439 426
440 fDrawCommandGeometryWidget.setDrawCommandIndex(currentRow); 427 fDrawCommandGeometryWidget.setDrawCommandIndex(currentRow);
441 428
442 fInspectorWidget.setDisabled(false); 429 fInspectorWidget.setDisabled(false);
443 fViewStateFrame.setDisabled(false); 430 fViewStateFrame.setDisabled(false);
444 } 431 }
445 } 432 }
446 433
447 void SkDebuggerGUI::selectCommand(int command) { 434 void SkDebuggerGUI::selectCommand(int command) {
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 842
856 // NOTE(chudy): Makes first item unselectable. 843 // NOTE(chudy): Makes first item unselectable.
857 QStandardItemModel* model = qobject_cast<QStandardItemModel*>( 844 QStandardItemModel* model = qobject_cast<QStandardItemModel*>(
858 fFilter.model()); 845 fFilter.model());
859 QModelIndex firstIndex = model->index(0, fFilter.modelColumn(), 846 QModelIndex firstIndex = model->index(0, fFilter.modelColumn(),
860 fFilter.rootModelIndex()); 847 fFilter.rootModelIndex());
861 QStandardItem* firstItem = model->itemFromIndex(firstIndex); 848 QStandardItem* firstItem = model->itemFromIndex(firstIndex);
862 firstItem->setSelectable(false); 849 firstItem->setSelectable(false);
863 } 850 }
864 851
852 void SkDebuggerGUI::updateImage() {
853 if (this->isPaused()) {
854 fCanvasWidget.drawTo(fPausedRow);
855 } else {
856 fCanvasWidget.drawTo(fListWidget.currentRow());
857 }
858 }
859
865 void SkDebuggerGUI::updateHit(int newHit) { 860 void SkDebuggerGUI::updateHit(int newHit) {
866 fCommandHitBox.setText(QString::number(newHit)); 861 fCommandHitBox.setText(QString::number(newHit));
867 } 862 }
868 863
OLDNEW
« no previous file with comments | « debugger/QT/SkDebuggerGUI.h ('k') | debugger/QT/SkDrawCommandGeometryWidget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698