Commit Graph

244 Commits

Author SHA1 Message Date
52a5d58045 UI: split area_copy_data into ED_area_data_copy, ED_area_data_swap
Was confusing to have swap/copy in the one function.
2014-04-11 17:18:19 +10:00
45f336c3a1 UI: correct own bad use of bool and document area_copy_data args 2014-04-11 09:17:43 +10:00
617557b08e Code cleanup: remove TRUE/FALSE & WITH_BOOL_COMPAT define 2014-04-01 15:22:28 +11:00
54a8753df3 Fix T39323: Animation playback is not synchronized when Screen Layout changes.
Own regression in rBd2a5ea04ed84.

This commit should be included if we do a 2.70 'a' release.
2014-03-21 15:17:50 +01:00
d2a5ea04ed Fix T38467: Animation playback is not synchronized when Screen Layout changes
When both old and new screens share the same scene, "transfer" playback to new screen, else stop playback.
2014-02-28 10:04:57 +01:00
b3afbcab8f ListBase API: add utility api funcs for clearing and checking empty 2014-02-08 06:24:05 +11:00
107566ebf1 Code cleanup: check -1 for error return explicitly 2014-02-03 19:35:44 +11:00
d900f5be55 Code cleanup: use bools where possible 2014-02-03 19:35:44 +11:00
2a76656976 Fix T38295: Crash when changing screen with different visible layers
The issue was caused by missing object update for the curve object
before going to new screen. And that new screen had different visible
layers due to disabled lock_camera_and_layers option.

Solved by calling DAG_on_visible_update() in ED_screen_set() even
in cases scene doesn't change. This ensures all the objects which
weren't visible before are correctly updated.
2014-01-21 15:01:32 +06:00
1f2136b329 Python/Depsgraph: bpy.data.*.is_updated now detects add/remove of any datablock.
Previously this only worked for some datablocks relevant to rendering, now it
can be used to detect if any type of datablock was added or removed (but not
yet to detect if it was modified, we need many more depsgraph tags for that).

Most of the changes are some function parameter changes, the important parts
are the DAG_id_type_tag calls.

Reviewed By: sergey, brecht

Differential Revision: https://developer.blender.org/D195
2014-01-15 16:47:53 +01:00
709041ed0b Threaded object update and EvaluationContext
Summary:
Made objects update happening from multiple threads. It is a task-based
scheduling system which uses current dependency graph for spawning new
tasks. This means threading happens on object level, but the system is
flexible enough for higher granularity.

Technical details:

- Uses task scheduler which was recently committed to trunk
  (that one which Brecht ported from Cycles).

- Added two utility functions to dependency graph:
  * DAG_threaded_update_begin, which is called to  initialize threaded
    objects update. It will also schedule root DAG node to the queue,
    hence starting evaluation process.

    Initialization will calculate how much parents are to be evaluation
    before current DAG node can be scheduled. This value is used by task
    threads for faster detecting which nodes might be scheduled.

  * DAG_threaded_update_handle_node_updated which is  called from task
    thread function when node was fully handled.

	This function decreases num_pending_parents of node children and
	schedules children with zero valency.

    As it might have become clear, task thread receives DAG nodes and
    decides which callback to call for it.

    Currently only BKE_object_handle_update is called for object nodes.

    In the future it'll call node->callback() from Ali's new DAG.

- This required adding some workarounds to the render pipeline.
  Mainly to stop using get_object_dm() from modifiers' apply callback.
  Such a call was only a workaround for dependency graph glitch when
  rendering scene with, say, boolean modifiers before displaying
  this scene.

  Such change moves workaround from one place to another, so overall
  hackentropy remains the same.

- Added paradigm of EvaluaitonContext. Currently it's more like just a
  more reliable replacement for G.is_rendering which fails in some
  circumstances.

  Future idea of this context is to also store all the local data needed
  for objects evaluation such as local time, Copy-on-Write data and so.

  There're two types of EvaluationContext:

  * Context used for viewport updated and owned by Main. In the future
    this context might be easily moved to Window or Screen to allo
    per-window/per-screen local time.

  * Context used by render engines to evaluate objects for render purposes.
    Render engine is an owner of this context.

  This context is passed to all object update routines.

Reviewers: brecht, campbellbarton

Reviewed By: brecht

CC: lukastoenne

Differential Revision: https://developer.blender.org/D94
2013-12-26 17:24:42 +06:00
7658f7acff Fix for off by one error noted by Anthony Edlin 2013-12-12 19:02:51 +11:00
5afc2a9a44 Code cleanup: assign win size to const vars and some renaming 2013-12-11 13:07:00 +11:00
91d8519c47 Fix T37463: Increasing window size would add space around menu header 2013-12-10 23:54:33 +11:00
d07fea2439 Screen Resize: minor code cleanup 2013-12-10 23:52:19 +11:00
e140024f2e Fix for off-by-one regression in D41
making the window larger was using incorrect factor leaving a black bar
on the window edge.
2013-12-10 22:19:17 +11:00
6976866d5a User Interface: Ctrl+C over a menu copies the py command
also use bools rather then ints
2013-12-05 17:26:03 +11:00
e626998a26 UI: fix errors in screen edge drawing, moving and region hiding.
Summary:
- Fixes an off-by-one error in screen_test_scale() which causes the areas and
  regions to draw one pixel bigger on the right and top side of the window,
  therefor hiding one line of pixels.
- Fixes an off-by-one error in rct_fits() which causes regions to incorrectly
  hide even though it would fit inside the area.
- Correctly set the limits for the screen edge move operator so it will always
  go up to AREAMINX and headery.
- Change screen_find_active_scredge() so it doesn't show the arrows cursor on
  the screen edges along the window border.

The import thing to understand is how integer rects are used in this part of the
code. They are constructed as a lower left and top right point and are INCLUSIVE.
Meaning that if you have a rect's xmin = 10 and xmax = 30 then the total number
of pixels is 21. So to get the size of a rect you have to do xmax - xmin + 1,
which is easy to forget and result in off-by-one errors.

Reviewed By: brecht

Differential Revision: http://developer.blender.org/D41
2013-11-25 14:26:45 +01:00
74828cc609 Fix #36783: click outside splash screen to close it would not highlight the
button under the mouse, and so clicking the button failed without first
moving the mouse. Similar issues could happen with popups and switching
windows.

The problem is that a notifier was being used to deactivate possible other
activated buttons, but as notifiers are delayed it could undo the correct
activation too. If anyone notices hanging tooltips or other issues after this
fix, please report them.
2013-09-23 23:31:42 +00:00
064bf204f3 fix for glitch splitting horizontally with a high dpi, could make areas smaller then the header which pushed the original view out of the screen. 2013-09-04 03:52:25 +00:00
d2d9004991 Fix #36243: one screen should never be used by multiple windows, but this could
happen when a screen was maximized to a single editor, now that case is disabled
too.
2013-08-08 17:05:09 +00:00
32d5b52f59 re-arrange '--help' output into more useful sections (added debug, python).
also minor style cleanup
2013-06-29 10:09:15 +00:00
a2552c5836 Fix #35882: render to image editor, ctrl+up fullscreen, click back to previous
did not work.
2013-06-26 20:51:41 +00:00
98d3278189 fix [#35629] Incorrect Rendered Viewport Horizontal Splitting
previously the order didnt matter but with viewport render, its noticable.
2013-06-04 21:23:32 +00:00
24321d4891 Solving ancient Blender window sizing issue;
- Removed grid-snapping for area coordinates on scaling windows. 
  That caused the areas to shrink or expand, and eventually corrupt screen layouts.

- Added simple but efficient life resize for OSX. I need to know why this is so much
  code for Windows... I suggest Windows to just copy same method; dispatch the queue,
  and just let the event system draw.
2013-05-25 14:08:56 +00:00
6bc2d57235 Fix #35449: image sequences to drive e.g. particle length or used in modifiers
were no properly updating when rendering animations.

The render engine was only updating the image user current frame on images used
by material textures. Now moved the function that updates all from the editors
to blenkernel level and do it on all frame changes.
2013-05-22 22:17:07 +00:00
11c6abe53b Fix crash going to a scene with no camera, with an inactive 3D viewport space.
The regions of the space are stored in a different place depending if it is
active or if another space is in use. The code here was iterating over both
but it should be only one because the other might contain regions of another
space.
2013-04-24 23:09:22 +00:00
54c6af6016 fix [#35043] Camera view breaks with multiple scenes and the "view center camera" action. 2013-04-21 16:08:49 +00:00
790374d07d code cleanup: rename editmode functions so we have ED_object_editmode_load/enter/exit 2013-03-21 14:18:17 +00:00
88cf1a2bc7 Screen: add exit callback for area and region types, this gets called when
hiding or removing an area or region.
2013-03-15 19:56:29 +00:00
ddddb7bab1 code cleanup: favor braces when blocks have mixed brace use. 2013-03-09 03:46:30 +00:00
936a38c607 fix for valgrind warning - using uninitialized variable. Though in practice it didn't cause any problems.
Getting the 'CTX_data_main' while un-fullscreen'ing a space would do a context lookup into the view3d_context which had an uninitialized layer.
since view3d_context doesn't hold a 'main' member it never did anything but cleaner not to do context lookups while modifying the view.
- noticed while checking on a real bug :)
2013-02-05 02:28:49 +00:00
6a57420b52 Small drawing glitch, for UI with transparent overlapping regions;
- The corner 'duplicate/merge area' widget was drawing too often.

(Added comment in subwindow 'active' code, too many redraws are being
sent on moving mouse over region eddges)
2012-12-22 11:52:53 +00:00
eac2042fc0 Another patch for changes in file format...
- Since 2.50, the .blends have the current file name stored
- In versions up to 2.65.0 this didn't save for files saved from startup
  (i.e. files saved without loading a file)

Code now adds the file name after all, except for recovery loads.
2012-12-19 16:45:47 +00:00
9aa6698bd0 UI DPI scaling:
Recoded the (2.65.1 version) region scale, which happened on loading files with 
different saved size windows. Also scaling window itself was affected.

Old method: scaled region widths based on area/editor scaling factors.
That was leading to too small or too large button regions easily.

New method: region width/height now are in DPI control. Much nicer!
- On changing dpi, buttons remain visually same widths.
- On changing window sizes, the button views and zooms stick to exactly same.

Caveat: people who were using Blender with 'extreme' dpi setting, might find
the layouts slightly differ. Not sure if this is worth version patching...

Todo: overlapping regions that overlap together draw badly. Fix underway.
2012-12-19 15:44:47 +00:00
359b683e1e Small tweak for using transparent+overlapping regions:
On mouse-over these regions now become active always (as if they were opaque).
This active state is used by many tools, or for drawing cursors.

Currently, all events (if not handled by button region) are passed on anyway to
the underlying region.

Visible errors were for example drawing the paint brush circle.
2012-12-17 09:02:43 +00:00
96b2dc8e13 style cleanup: changes from recent commits 2012-12-13 01:00:21 +00:00
12b642062c Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability

Short list of main changes:

- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
  Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
  This allows keeping UI and data without actual saves, until you actually save.
  When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v). 
  Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards. 
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
  Old option is called "Save Startup File" the new one "Save User Settings".
  To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
  This also fixes "Continuous Grab" for OSX. (error since 2009)
2012-12-12 18:58:11 +00:00
b32bf2c462 code cleanup: use min_/max_ math functions, add minmax_v2_v2v2. 2012-10-25 22:47:54 +00:00
1767b65846 style cleanup: also rename bmesh_decimate.c --> bmesh_decimate_collapse.c 2012-10-23 03:38:26 +00:00
f3ece5a108 style cleanup: trailing tabs & expand some non prefix tabs into spaces. 2012-10-21 05:46:41 +00:00
25c96bc9f3 code cleanup: remove unused macros, commet some which may be useful later - or good to keep for completeness. quieted some warnings and add flags -Wmissing-include-dirs and -Wno-div-by-zero to cmake/gcc 2012-09-20 01:02:39 +00:00
3bf576e57e Fix missing dependency graph update when switching to another scene, now does
same update as loading .blend or switching layer visibility.
2012-09-19 17:11:07 +00:00
bb3b3abe30 Fix #32530: animation playback did not respect preview frame range if the current
frame was before the start frame.
2012-09-10 14:00:01 +00:00
aa2d84da37 style cleanup:
also remove some redundant conversions int -> short -> int
2012-09-09 00:00:21 +00:00
56b28635e7 code cleanup: rename BLI_in_rctf() --> BLI_rctf_isect_pt(), to conform with our naming convention. 2012-08-23 18:25:45 +00:00
0b5a995cfd code cleanup: rename G.rt to G.debug_value 2012-08-08 18:21:54 +00:00
9ff4fa6671 style cleanup 2012-08-04 12:30:16 +00:00
a5127dba57 vector versions of BLI_in_rctf / BLI_in_rcti, (BLI_in_rctf_v, BLI_in_rcti_v)
use where possible.
2012-07-11 18:17:48 +00:00
468ef74ed7 More spell and typo fixes (mostly visualise->visualize, grey->gray, normalise->normalize). 2012-07-03 19:09:07 +00:00