1. 14 Dec, 2017 1 commit
  2. 25 Oct, 2017 1 commit
  3. 24 Oct, 2017 1 commit
  4. 17 Oct, 2017 1 commit
  5. 22 Sep, 2017 2 commits
  6. 15 Sep, 2017 1 commit
  7. 14 Sep, 2017 1 commit
  8. 16 May, 2017 1 commit
  9. 20 Feb, 2017 1 commit
    • Nikolai Kosjar's avatar
      CppTools/ProjectManagers: Reduce ui blocking when loading projects · 8c90998f
      Nikolai Kosjar authored
      ${AnyProject}::updateCppCodeModel() did two potentially not that cheap
      operations in the ui thread:
       (1) Querying the MimeDatabase for the mime type for the source files of
           the project. In 99.9% of the cases no files need to be read for
           this as the file extension will resolve the type. The expensiveness
           comes from the sheer number of files that can occur.
       (2) Calling compilers with the "(sub)project's compiler command line"
           to determine the macros. While the caches avoid redundant calls,
           the number of the unique compiler calls makes this still a
           ui-freezing experience.
      
      These two operations are moved into a worker thread. For this, the
      expensive compiler calls are encapsulated in thread safe lambdas
      ("runners") in order to keep the "mutexed" data minimal. The original
      API calls of the toolchains are implemented in terms of the runners.
      
      While adapting the project managers, remove also the calls to
      setProjectLanguage(). These are redundant because all of the project
      managers already set a proper value in the constructor. Also, currently
      there is no need (client) to report back detection of C sources in
      project parts. This also keeps CppProjectUpdater simple.
      
      There is still room for improvement:
       * Run the compiler calls in parallel instead of sequence.
       * Ensure that the mime type for a file is determined exactly once.
      
      Change-Id: I2efc4e132ee88e3c8f264012ec8fafe3d86c404f
      Reviewed-by: Tobias Hunger's avatarTobias Hunger <tobias.hunger@qt.io>
      8c90998f
  10. 15 Feb, 2017 1 commit
  11. 26 Jan, 2017 1 commit
  12. 16 Dec, 2016 1 commit
  13. 04 Aug, 2016 1 commit
  14. 23 May, 2016 1 commit
  15. 03 May, 2016 1 commit
    • Nikolai Kosjar's avatar
      QbsProjectManager: Fix SOFT ASSERT: "future.isFinished()" · 1cbb4cc9
      Nikolai Kosjar authored
      ...in file qbsproject.cpp, line 940.
      
      The assert can be triggered with e.g.:
       1. Load a bigger qbs project, e.g. qtcreator.qbs.
       2. Trigger project build as soon as possible.
       3. Cancel the "Parsing C/C++" operation.
       4. Wait until the build finished and the assert occurs.
      
      This happens because CppModelManager::updateProjectInfo() since
      
        commit  536ccc8a
        CppTools: Fix incompletely indexed project
      
      will check whether the previous indexer run was canceled or not. If it
      was canceled, it will trigger a full-reindexing of the project.
      
      Updating the compiler call data is a special case and it should never
      trigger an indexing operation, so introduce a dedicated update function
      for this case.
      
      Change-Id: I456945ccf2bf697aaeada572ed87f3acb21a5eaf
      Reviewed-by: default avatarChristian Kandeler <christian.kandeler@theqtcompany.com>
      Reviewed-by: Eike Ziller's avatarEike Ziller <eike.ziller@qt.io>
      1cbb4cc9
  16. 25 Apr, 2016 1 commit
    • Nikolai Kosjar's avatar
      CppTools: Fix incompletely indexed project · 536ccc8a
      Nikolai Kosjar authored
      Use case to reproduce:
       1. Open some bigger project, e.g. qtcreator.pro
       2. As soon as "Parsing C/C++ files" is reported, add a character to
          qmake's additional arguments in project mode (indexing should not be
          finished at this point).
       3. The indexing gets canceled.
       ==> ...but reindexing is not triggered.
      
      Fix by checking whether the future was canceled.
      
      Task-number: QTCREATORBUG-16134
      Change-Id: I520c6a64a6adc1cb04cafb5e0aa56c8bf41d7b14
      Reviewed-by: Christian Stenger's avatarChristian Stenger <christian.stenger@qt.io>
      536ccc8a
  17. 30 Mar, 2016 1 commit
  18. 19 Feb, 2016 1 commit
  19. 12 Feb, 2016 1 commit
  20. 19 Jan, 2016 1 commit
  21. 13 Jan, 2016 2 commits
  22. 16 Dec, 2015 1 commit
  23. 02 Dec, 2015 1 commit
    • Nikolai Kosjar's avatar
      Clang: Fix recovering on clangbackend crash · 475b11aa
      Nikolai Kosjar authored
      The translation unit was updated, but not re-registered.
      
      Handle the editor documents this way:
        1. Reset all ClangEditorDocumentProcessors (this will send an
           unregister message, but that's not problematic).
        2. For the visible editor documents, run their processors so that the
           translation units will be re-registered.
        3. For the invisible editor documents, mark them dirty. Once the user
           makes an invisible document visible again, the processor will run
           and also re-register the translation unit.
      
      Change-Id: I23693ac197bd34a183f3a0020eb5372268636599
      Reviewed-by: default avatarMarco Bubke <marco.bubke@theqtcompany.com>
      475b11aa
  24. 01 Dec, 2015 1 commit
  25. 16 Nov, 2015 1 commit
  26. 09 Nov, 2015 1 commit
  27. 12 Oct, 2015 1 commit
  28. 31 Aug, 2015 1 commit
  29. 20 Jul, 2015 1 commit
  30. 08 Jul, 2015 1 commit
  31. 10 Jun, 2015 1 commit
    • Nikolai Kosjar's avatar
      Clang: Use completion through backend process · 23b8a3b2
      Nikolai Kosjar authored
      This makes us independent of libclang crashes for completion.
      Re-parsing for highlighting still happens in the Qt Creator process.
      
      Run in verbose mode:
          qtc.clangcodemodel.ipc=true
      
      Run tests:
          -test "ClangCodeModel"
      
      Task-number: QTCREATORBUG-14108
      Task-number: QTCREATORBUG-12819
      Change-Id: Id3e95bd2afdb6508bbd1d35fddc69534a909b905
      Reviewed-by: default avatarMarco Bubke <marco.bubke@theqtcompany.com>
      23b8a3b2
  32. 03 Jun, 2015 1 commit
  33. 05 Mar, 2015 1 commit
  34. 09 Feb, 2015 1 commit
  35. 30 Jan, 2015 1 commit
  36. 16 Jan, 2015 1 commit
  37. 14 Jan, 2015 1 commit
  38. 18 Dec, 2014 1 commit