Commit Graph

168 Commits

Author SHA1 Message Date
69c6bd604c make sure BPY_Err_Handle clears python errors, even if the exception cant be printed. Added PyErr_Clear() incase there are other references to exception data (sys.exc_info() from python) 2008-10-22 07:09:15 +00:00
59a30d822f fix for [#17878] Scripts operating on blender objects don't clear memory after a crash
This is an interesting bug since it is likely the cause of many other suspicious python crashes in blender.

sys.last_traceback would store references to PyObjects at the point of the crash.
it would only free these when sys.last_traceback was set again or on exit.

This caused many crashes in the BGE while testing since python would end up freeing invalid game objects -
When running scripts with errors, Blender would crash every 2-5 runs - in my test just now it crashed after 4 trys.

It could also segfault blender, when (for eg) you run a script that has objects referenced. then load a new file and run another script that raises an error.
In this case all the invalid Blender-Object's user counts would be decremented, even though none of the pointers were still valid.
2008-10-22 03:10:00 +00:00
a618708f48 Blender works with python 2.6, our own import functions that replace pythons internal function needed updating for an extra in argument in 2.6.
if importing is not working blender should not crash (was crashing on exit)
2008-10-03 06:27:41 +00:00
0fcd017031 missing ; in last commit
radius was not being calculated on curves that had a bevel object
2008-10-02 17:11:49 +00:00
1b3e2d7c02 blender would crash if the "sys" module didnt import, now just give a warning and continue. 2008-10-02 16:59:08 +00:00
2a331067cc resolve some compiler warnings with intel c/c++ compiler
* subsurf code had a lot of unused variables, removed these where they are obviously not needed. commented if they could be useful later.
* some variables declorations hide existing variables (many of these left), but fixed some that could cause confusion.
* removed unused vars
* obscure python memory leak with colorband.
* make_sample_tables had a loop running wasnt used.
* if 0'd functions in arithb.c that are not used yet.
* made many functions static
2008-09-29 17:08:11 +00:00
905983229a == Python Space Handlers ==
Patch #9673: "Short patch to make spacehandler event scripts work more like normal python gui script handlers" by Steven Truppe:
http://projects.blender.org/tracker/?func=detail&atid=127&aid=9673&group_id=9

This patch adds the Blender.eventValue variable available for space handlers, holding the event value (aka 1 for button and key presses, X or Y coordinate for mousex / mousey movement). Thanks, Steven. PS: this doesn't break existing scripts.
2008-09-19 18:53:05 +00:00
6ff74f4527 == Python Script Links ==
Bug #17599:
Summary: Python constraints, good in 2.46 not working anymore in 2.47
http://projects.blender.org/tracker/?func=detail&atid=125&aid=17599&group_id=9

Improved my old hack to avoid frame changed scriptlinks from running when rendering stills, should fix this bug. It also causes REDRAW scriptlinks to be executed during renders, but that conforms to how FRAMECHANGED ones work.

BTW: this can still be improved. The current system meant to disable all Python functionality at once needs imo to be replaced by one that allows to enable / disable per feature (scriptlinks, pyconstraints, pynodes, etc.). A better way to inform scriptlinks about what is going on (render, anim, render anim, etc.) would also help. Will discuss with others.
2008-09-18 22:33:49 +00:00
ac86c04401 added BLI_convertstringcwd, used so command line blendfiles and python scripts can be relative to the current path.
- was alredy doing this for blendfiles, but better to have in its own function.

header_text.c - renamed PATH_MAX, was defined by system includes.
2008-09-15 01:32:53 +00:00
eaf84d2c25 BPY merge from apricot branch.
work around non unix line endings using pythons execfile() function rather then loading the binary data and manually stripping the line endings.
2008-09-10 01:17:03 +00:00
961a26d500 fix for 2 python refcounting errors 2008-09-03 23:51:55 +00:00
0410775e2e Rolled back on rev. 16039. Had problems with display, messages being blank and scripts not being recompiled in some cases. Needs more thought before committing. 2008-08-12 10:08:46 +00:00
83bcb9deff Python errors originating in the active text are now displayed at the top of the text area. Errors in other files/scripts still pop up a message as before and all errors are still printed to the console. This removes the need to switch to the console for local errors. 2008-08-09 18:11:40 +00:00
4c89ee7838 Line highlighting did not work for syntax errors. 2008-08-09 14:47:51 +00:00
ed972db1a3 Merge from trunk: 15912:16031 2008-08-09 10:12:59 +00:00
4a8aa06a14 Merge from trunk
revs. 15635:15771
2008-07-26 10:45:11 +00:00
f042a468fd Merged 15170:15635 from trunk (no conflicts or even merges) 2008-07-18 23:35:34 +00:00
dbb61988fd Any script can now register a unique key combination as part of its bpy header. For a supported space type, the user may press this shortcut to invoke the script.
Space types that are to support shortcuts like this should call BPY_menu_do_shortcut(...) from the event queue read method (See winqreadtextspace in drawtext.c for example)
2008-07-15 07:04:31 +00:00
bdc030c664 Text plugin basis with plugin for suggestions/completions. The suggest plugin works for imported global variables, methods, modules and module members. For example typing:
import Blender
from Blender import *
| <- cursor here suggests globals
Blender.Draw.gl| <- cursor here suggests all Draw members starting gl

Currently suggestions are listed in the console when the space is redrawn but will be presented as a menu-style list soon. Also to add are shortcut/activation keys to allow plugins to respond to certain key strokes.
2008-06-24 15:25:25 +00:00
10d59e7208 Merged from trunk
svn merge -r14988:15170 https://svn.blender.org/svnroot/bf-blender/trunk/blender
2008-06-09 14:04:19 +00:00
f115a5f789 fix for [#6104] CR generates space at String Creation
replace windows line endings (\r\n) with \n rather then inserting spaces.
2008-05-09 17:37:01 +00:00
cfcdf36cd8 fix for [#10330] Can't import packages or modules from a user defined script path in 2.46rc3, works in 2.45 (Windows) 2008-05-08 22:07:00 +00:00
110f927c63 Changed frame numbering to only alter hashes if they are in the filename (not the directory name) to fix bug [#10566] File Open Dialog replaces '#' with '0' in directory names.
removed frame numbering from BLI_convertstringcode into its own function (BLI_convertstringframe), many uses of BLI_convertstringcode were passing dummy frames values anyway.
in cases where adding the current frame number to a filename is needed run BLI_convertstringframe(...) after BLI_convertstringcode(...)

There are some cases Im not sure BLI_convertstringframe is needed, these have been commented as todo, but at least have the same functionality they used to.
2008-05-04 09:41:15 +00:00
723397bb91 running scripts in background mode would crash blender when checking a scriptspace areas 2008-04-28 21:54:03 +00:00
c8376869b1 BLI_split_dirfile was being used in cases it should not have been,
Added BLI_split_dirfile_basic, that only splits the path into directory and file. without checking the dir exists or creating it, without changing the original string that is passed to it.
2008-04-26 13:08:57 +00:00
4f49a3b906 added ipo script template from blenderartists forTe, made scripts refresh on load factory settings and replaced elysiun with blenderartist.org in headers 2008-04-23 14:04:05 +00:00
Chris Want
5d0a207ecb Patch from GSR that a) fixes a whole bunch of GPL/BL license
blocks that were previously missed; and b) greatly increase my
ohloh stats!
2008-04-16 22:40:48 +00:00
d9de141077 == bugfix ==
fix for [#6950] Blender crashes when .blog file top line is 160 characters or more
- made sure BLI_convertstringcode doesn't return more than 240 chars 
- went through all callers and fixed places where string passed to BLI_convertstringcode was too short
- TODO: look into increasing sample->name and sound->name too, I prevented crashes, but filename might get shortened.
2008-03-30 16:18:01 +00:00
f47aec78c9 fix for [#7962] anomalous mem usage with pydrivers.py scripts 2008-03-18 14:49:31 +00:00
bc7b18131b Running scripts with Blender.Run() would crash when reloading. 2008-03-17 19:58:11 +00:00
a5d31fc28e fix for [#8559] Python script that uses FIleSelector and has an error in it segfaults Blender 2008-03-15 18:53:42 +00:00
f70d9ceed0 fix bug in walking through script linked list (thanks VS) 2008-03-15 16:49:22 +00:00
b4e13ae575 Another big purge of warnings. (Main culprits this time were Campbell and Geoffrey):
* no newline at end of file (2-3)
* uninitialised vars (1)
* unused vars (1-2)
* assigning/comparing pointers and ints (numerous)
* etc.
2008-03-07 03:24:23 +00:00
08f306c81c Made python scripts save and load in the blend file so you can have the same scripts running when you open a blend file.
Also scripts will re-run on undo rather then closing.

This is done by saving and loading the name of the script or textblock of the 'Script' datablock, connected to the ScriptSpace. This way when there is a name but the script dosnt run.
Blender runs the script or text block if available.
2008-03-06 21:25:15 +00:00
2089ac3091 == BPython ==
Another experiment to support threading properly. By default the Python Interpreter releases its lock every 100 instructions so that other threads get a chance to run Python code and API calls. But that is not enough to prevent race conditions causing artifacts (and maybe crashes) during threaded rendering, since all threads will access the same pynodes data.

So I'm disabling this automatic releasing of the lock (the GIL) by the interpreter, which seems to be a better option for how Blender uses Python.
2008-02-26 17:23:56 +00:00
3dd622b2b4 Added PyGILState_Ensure and PyGILState_Release funcs around module reloading.
Without them blender would crash when reloading scripts.
2008-02-25 18:35:35 +00:00
87dd4809ed == PyNodes ==
Small update to where a PyGILState_Ensure() call is made.

--

Let me use this commit to mention a couple things related to this change to make Python thread-safe in Blender:

1) This page explains the changes: http://wiki.blender.org/index.php/BlenderDev/BPythonAPI/Threads

2) If you experience hangs (deadlocks) when running anything related to Python in Blender, the related part in the code may need a proper Ensure/Release block, as explained in the above link.

From Joshua (aligorith)'s previous commit to this file:

"* various problems related to gilstate calls being added in strange places (could someone familiar with python double check that they're in the right places now)?"

I checked the two places you fixed, second one is ok, the first one needed to be before the call to create a py dict -- done. Thanks for catching them!
2008-02-24 16:19:39 +00:00
54f83a423a Purge of warnings from BPY_interface.c
* missing include for depsgraph from previous commit
* various problems related to gilstate calls being added in strange places (could someone familiar with python double check that they're in the right places now)?
2008-02-24 10:36:19 +00:00
cd934aa1a8 Patch #8344:
Submitted by: Thomas Knight (epat)

Parts committed:
1) Fixed a few misspellings in some error strings.
2) Fixed a (theoretical) bug with pyconstraints where a text object could be deleted from python but would remain linked
to the constraint it was assigned to - causing slight UI usage discontinuities!

Not committed yet:
3) Particle system bugfix in this patch has not been committed. Could jahka or brecht check this.
2008-02-24 06:38:42 +00:00
Nathan Letwory
012f0a336c === PyNodes ===
* Make PyNodes work with threaded renderer. This patch is by Willian. He has worked hard on getting this sorted out - now you should be able to render with PyNodes AND multiple threads.
2008-02-23 12:05:28 +00:00
4c0b33ef80 Python Bugfix
A new file could have its Blender.Get("filename") return "<memory>" after undo'ing on an open file.
Fix for own error with python sys.path, messed up game engine.
2008-02-20 18:56:07 +00:00
cf27a896fa Python Bugfix,
Setting the user preference for python scripts didnt add the bpymodules subdirectory to sys.path (python module search path).
Also problems with entering and exiting- the old path was used until next restart.
2008-02-20 13:42:15 +00:00
86cbb9f7cb PyConstraint Bugfix:
Uncommented armature weakrefs stuff for PyConstraints. This should fix some erratic error messages a user found with these a few months ago.
2008-01-30 09:29:40 +00:00
9723e3ef39 miscellaneous edits from python development branch merged back into trunk 2007-12-07 09:51:02 +00:00
ccc82beb64 import all math funcs (sin/cos/tan/e... etc) by default into buttons and drivers 2007-12-03 16:43:58 +00:00
6142ae3785 ==Python API==
Bugfix, Space Handlers could crash blender when used with armatures.
also fixed some possible bugs in other areas.
2007-11-06 13:44:26 +00:00
cf8032f315 == PyConstraints - Now working again ==
I've finally traced down the causes of several of the bugs which caused PyConstraints to work incorrectly (or not at all).

* Freeing is now done using BLI_freelistN inside the pycon_free function, instead of looping through the targets ourselves. This fixes all of those Memblock free: pointer not in list errors.
* BPY_pyconstraint_update now correctly creates/frees the constraint's targets as needed. Previously, it was creating/removing the wrong number of targets. Also, pyconstraints no longer get disabled when using armatures (not bones)
* The panel drawing was also not working right, as there were still some offset issues.
2007-10-23 08:23:57 +00:00
6422a740c2 == Constraints System - Recode 2 ==
Once again, I've recoded the constraints system. This time, the goals were:
* To make it more future-proof by 'modernising' the coding style. The long functions filled with switch statements, have given way to function-pointers with smaller functions for specific purposes.
* To make it support constraints which use multiple targets more readily that it did. In the past, it was assumed that constraints could only have at most one target.

As a result, a lot of code has been shuffled around, and modified. Also, the subversion number has been bumped up.

Known issues:
* PyConstraints, which were the main motivation for supporting multiple-targets, are currently broken. There are some bimport() error that keeps causing problems. I've also temporarily removed the doDriver support, although it may return in another form soon. 
* Constraints BPy-API is currently has a few features which currently don't work yet
* Outliner currently only displays the names of the constraints instead of the fancy subtarget/target/constraint-name display it used to do. What gets displayed here needs further investigation, as the old way was certainly not that great (and is not compatible with the new system too)
2007-10-21 23:00:29 +00:00
e9c2aa691e updated pyconstraint template from nathan (cessen) which exposed some
bugs with pyconstraints, also added a missing decref from python (wasnt freeing the return value from the settings 
button).
2007-10-15 15:28:09 +00:00
15ad8e7e66 pyconstraints USE_TARGET wasnt being checked for true/false, was assumed True whenever it was assigned in the
script
2007-10-15 14:41:29 +00:00