Skip to content
Snippets Groups Projects
  1. Mar 25, 2020
    • Nat Goodspeed's avatar
      SL-793: Use Boost.Fiber instead of the "dcoroutine" library. · 66981fab
      Nat Goodspeed authored
      Longtime fans will remember that the "dcoroutine" library is a Google Summer
      of Code project by Giovanni P. Deretta. He originally called it
      "Boost.Coroutine," and we originally added it to our 3p-boost autobuild
      package as such. But when the official Boost.Coroutine library came along
      (with a very different API), and we still needed the API of the GSoC project,
      we renamed the unofficial one "dcoroutine" to allow coexistence.
      
      The "dcoroutine" library had an internal low-level API more or less analogous
      to Boost.Context. We later introduced an implementation of that internal API
      based on Boost.Context, a step towards eliminating the GSoC code in favor of
      official, supported Boost code.
      
      However, recent versions of Boost.Context no longer support the API on which
      we built the shim for "dcoroutine." We started down the path of reimplementing
      that shim using the current Boost.Context API -- then realized that it's time
      to bite the bullet and replace the "dcoroutine" API with the Boost.Fiber API,
      which we've been itching to do for literally years now.
      
      Naturally, most of the heavy lifting is in llcoros.{h,cpp} and
      lleventcoro.{h,cpp} -- which is good: the LLCoros layer abstracts away most of
      the differences between "dcoroutine" and Boost.Fiber.
      
      The one feature Boost.Fiber does not provide is the ability to forcibly
      terminate some other fiber. Accordingly, disable LLCoros::kill() and
      LLCoprocedureManager::shutdown(). The only known shutdown() call was in
      LLCoprocedurePool's destructor.
      
      We also took the opportunity to remove postAndSuspend2() and its associated
      machinery: FutureListener2, LLErrorEvent, errorException(), errorLog(),
      LLCoroEventPumps. All that dual-LLEventPump stuff was introduced at a time
      when the Responder pattern was king, and we assumed we'd want to listen on one
      LLEventPump with the success handler and on another with the error handler. We
      have never actually used that in practice. Remove associated tests, of course.
      
      There is one other semantic difference that necessitates patching a number of
      tests: with "dcoroutine," fulfilling a future IMMEDIATELY resumes the waiting
      coroutine. With Boost.Fiber, fulfilling a future merely marks the fiber as
      ready to resume next time the scheduler gets around to it. To observe the test
      side effects, we've inserted a number of llcoro::suspend() calls -- also in
      the main loop.
      
      For a long time we retained a single unit test exercising the raw "dcoroutine"
      API. Remove that.
      
      Eliminate llcoro_get_id.{h,cpp}, which provided llcoro::get_id(), which was a
      hack to emulate fiber-local variables. Since Boost.Fiber has an actual API for
      that, remove the hack.
      
      In fact, use (new alias) LLCoros::local_ptr for LLSingleton's dependency
      tracking in place of llcoro::get_id().
      
      In CMake land, replace BOOST_COROUTINE_LIBRARY with BOOST_FIBER_LIBRARY. We
      don't actually use the Boost.Coroutine for anything (though there exist
      plausible use cases).
      66981fab
  2. Sep 07, 2018
  3. Sep 05, 2018
  4. Jun 30, 2016
    • Nat Goodspeed's avatar
      DRTVWR-418: Unify control flow through LLAppViewer across platforms. · 464a0df4
      Nat Goodspeed authored
      The LLApp API used to consist of init(), mainLoop(), cleanup() methods. This
      makes sense -- but on Mac that structure was being subverted. The method
      called mainLoop() was in fact being called once per frame. There was
      initialization code in the method, which (on Mac) needed to be skipped with an
      already-initialized bool. There was a 'while' loop which (on Mac) needed to be
      turned into an 'if' instead so the method would return after every frame.
      
      Rename LLApp::mainLoop() to frame(). Propagate through subclasses LLAppViewer
      and LLCrashLogger. Document the fact that frame() returns true to mean "done."
      (This was always the case, but had to be inferred from the code.)
      
      Rename the Mac Objective-C function mainLoop to oneFrame. Rename the C++ free
      function it calls from runMainLoop() to pumpMainLoop(). Add comments to
      llappdelegate-objc.mm explaining (inferred) control flow.
      
      Change the Linux viewer main() and the Windows viewer WINMAIN() from a single
      LLAppViewer::mainLoop() call to repeatedly call frame() until it returns true.
      
      Move initialization code from the top of LLAppViewer::frame() to the init()
      method, where it more properly belongs. Remove corresponding
      mMainLoopInitialized flag (and all references) from LLAppViewer.
      
      Remove 'while (! LLApp::isExiting())' (or on Mac, 'if (! LLApp::isExiting())')
      from LLAppViewer::frame() -- thus unindenting the whole body of the 'while'
      and causing many lines of apparent change. (Apologies to reviewers.)
      
      There are four LLApp states: APP_STATUS_RUNNING, APP_STATUS_QUITTING,
      APP_STATUS_STOPPED and APP_STATUS_ERROR. Change LLAppViewer::frame() return
      value from (isExiting()) (QUITTING or ERROR) to (! isRunning()). I do not know
      under what circumstances the state might transition to STOPPED during a
      frame() call, but I'm quite sure that if it does, we don't want to call
      frame() again. We only want a subsequent call if the state is RUNNING.
      
      Also rename mainLoop() method in LLCrashLogger subclasses
      LLCrashLoggerWindows, LLCrashLoggerMac, LLCrashLoggerLinux. Of course it's
      completely up to the frame() method whether to yield control; none of those in
      fact do. Honor protocol by returning true (frame() is done), even though each
      one's main() caller ignores the return value.
      
      In fact LLCrashLoggerWindows::mainLoop() wasn't using the return protocol
      correctly anyway, returning wParam or 0 or 1 -- possibly because the return
      protocol was never explicitly documented. It should always return true: "I'm
      done, don't call me again."
      464a0df4
  5. Nov 10, 2015
  6. Aug 19, 2015
  7. Jun 17, 2015
  8. Apr 30, 2015
  9. Nov 20, 2014
  10. Dec 03, 2013
  11. Aug 15, 2013
  12. Apr 30, 2013
  13. Mar 29, 2013
  14. Mar 28, 2013
  15. Mar 12, 2013
  16. Oct 10, 2012
  17. Oct 03, 2012
  18. Sep 21, 2012
  19. Oct 27, 2011
  20. Jul 12, 2011
  21. Apr 03, 2011
  22. Oct 13, 2010
  23. Sep 21, 2010
  24. Aug 13, 2010
  25. May 27, 2010
  26. Feb 17, 2010
  27. Oct 14, 2009
    • Adam Moss's avatar
      Merge a big bunch of fixes from maint-viewer. Hooray. · 406927f6
      Adam Moss authored
      svn merge -r136066:136073 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-viewer/maint-viewer-24-qa-9
      
      DEV-8553 New Server Tools - Prep Land For Sale
      DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
      DEV-32942 (QAR-1521) Bad border crossings or TP / Ruthing issues
      DEV-33239 VWR-13816: Resizing the Search Window Causes the Results to Refresh back to First Page
      DEV-27746 Running a dev build of Second Life will make console window show up on non-dev builds (Windows)
      DEV-33209 Linux 1.24.0.120778 client fails to run
      DEV-29123 SVC-3871: Crash of viewer when clicking on ghost objects at (0,0,0) on a sim
      DEV-35433 Attempting to upload wrong file type crashes viewer
      DEV-33499 viewer2009 is not using KDU
      DEV-33912 Griefing viewer crashes others' viewers with malformed sound files
      DEV-3784 VWR-138: Animation Priority not working correctly, Can't create new AOs
      DEV-20678 VWR-9069: Region variable says 'Region Name' in AR if no object is selected
      DEV-19934 Help->About Second Life doesn't differentiate between 32- and 64-bit Vista
      DEV-6604 Restored folders have 'Purge Item' and 'Restore Item' options
      DEV-12867 VWR-5717: Selected Text is not replaced by Input text when Japanese IME is on
      DEV-11894 Notecards/Texture windows don't open completely when opened from inventory
      DEV-10641 VWR-4955: Local Chat doesn't show end of last conversation
      DEV-30039 VWR-12620: Viewer build fails on Linux when compiled with -O2 (--type=Release)
      DEV-20944 VWR-9065: (intermittent) Right Click >profile on avatar does not display profile
      DEV-24828 Menu accelerator prefixes shouldn't be hard-coded
      DEV-34529 VWR-14267: Clicking send in an IM window does not add the sent text to the line editor history
      DEV-34124 Invite to group, search by name will not show resident if their first name is two characters
      DEV-20930 VWR-9248: On Mac: the "--url" option causes a command line parsing error
      DEV-35306 Adult keyword filter triggers multiple warnings
      DEV-35503 VWR-3595: "Second Life requires True Color (32-bit) to run in a window" message is incorrect
      DEV-35656 VWR-12995: FTBFS: error: format '%-3d' expects type 'int', but argument 3 has type 'size_t'
      DEV-30043 VWR-12533: Linux viewer build for OpenAL fails during packaging unless FMOD library is available
      DEV-31898 VWR-13202: Right clicking mouse triggers arrow key control events
      DEV-32610 Keyboard shortcuts on OSX viewer overridden by OSX
      DEV-27067 Coverity Prevent: EVALUATION_ORDER defects
      DEV-26188 VWR-2242: Specially formatted .BVH file can cause avatar distortion
      DEV-25475 About Land dialog no longer shows Area: field
      DEV-19897 OSX Viewer Installer (for an RC) opens with poor positioning
      DEV-22837 Inventory> Search Recent Items highlighting incorrect characters
      DEV-21709 VWR-9377: Mapping will default to leave exact sim name listing first. (Searching Gar forces Gar to come up and not Garden of Dreams)
      DEV-23079 implement volume serial for linux client
      DEV-13930 VWR-6432: Space Navigator operation with vehicles is broken
      DEV-27666 VWR-10829: Linux Viewer: CLICK_ACTION_PAY shows CLICK_ACTION_PLAY icon
      DEV-23670 Viewer crashes on startup if installed into a custom folder with Korean, Japanese or Chinese characters in path
      DEV-19313 VWR-8454: PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS not highlighted in script editor
      DEV-19918 VWR-8885: Move character/*.xml files to source bundle
      DEV-25555 VWR-11172: A source coding mistake prevents number-pad keys from specifying Ctrl+digit shortcuts on Windows
      DEV-8536 VWR-4057: Multi-line chat display bug - first character in line missing
      DEV-29592 Mac LLFastTimer uses wall clock instead of Intel PMU
      DEV-29644 VWR-12587: Cmake install target has a hard coded secondlife-bin reference remaining
      DEV-25320 VWR-11128: Python not always detected by develop.py
      DEV-30040 VWR-12617: Poor type name that violates Coding Standard breaks compatibility with system header files
      DEV-30380 indra/newview/res-sdl/toolpay.BMP is modified during ./develop.py configure
      DEV-31247 VWR-12763: non-portable printf specifier used with size_t causes FTBFS on 64bit (due to -Werror)
      DEV-29565 VWR-12569: A comment in lluistring.h contains undefined UTF-8 code sequences
      DEV-22100 VWR-9620: send_parcel_select_objects in newview/llfloaterland.cpp uses the wrong datatype for the ReturnType field causing a warning
      DEV-31911 Selected objects / primitives should be greyed out when nothing is selected
      DEV-3667 Windows: Accelerator keys should be "Ctrl+X" rather than "Ctrl-X"
      DEV-27223 disable gstreamer on 64-bit linux
      DEV-8172 We Need a Linden Sale Option to Sell Land to Anyone
      DEV-25511 VWR-10311: Enable LipSync by default
      DEV-20443 Revamp group creation confirmation dialog to be more communicative
      DEV-20132 VWR-7800: Joystick / SpaceNavigator. Camera should remain in position when exiting flycam mode into avatar mode.
      DEV-18420 VWR-8393: Have build scripts copy fmod from an external location
      DEV-24841 VWR-10717: Right Space Navigator button should toggle fly in avatar movment, not jump/flyup.
      DEV-28457 change auto-populate value in buy L$ window from 1000 to 2000
      DEV-15545 VWR-3725: Please add resize option to the SEARCH window UI
      406927f6
  28. Mar 09, 2009
  29. Feb 03, 2009
  30. Jan 07, 2009
  31. Dec 23, 2008
  32. Aug 29, 2008
  33. Aug 12, 2008
  34. Jun 25, 2008
  35. Jun 02, 2008
Loading