-
-
Notifications
You must be signed in to change notification settings - Fork 263
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python binding issues #1004
Comments
partially addressed by #1005 |
Unable to "really" reproduce, the window cannot be closed properly unless the interactor is running. My window manager doesn't let me close the window (Awesome, ArchLinux). Which WM are you using ? I think it could be considered some kind of force closing. I'm not sure how we can handle it more cleanly but no F3D code is running when you close that window. |
Reproduced. We need to use threads to fix that. I think we definitely want it. |
Unable to reproduce, my window manager let me close the window without issue and python is not crashing. I think your window manager must be quite brutal ^^ |
Yes, and it makes complete sense. Should be adressed in the context of #443 |
Reproduced |
I can work on that issue. |
Great, let me know if you need any help |
Engine Deletion
The del statement removes the reference to the object, potentially making it eligible for garbage collection, but it does not mean that the window should be close. As for my understanding, I may be wrong. Engine holds a reference to itself, so even when we remove our reference to it (the variable “e”) the reference count never falls to 0 because it still has its own internal reference(Python Developer’s Guide, n.d.) . Additionally, I have tried to delete a tkinter, a python gui tool, window with the del statement and it didn't closed the window.
I believe we should define an "Engine" attribute specifically dedicated to the task of closing windows and performing any necessary clean-ups. Reference: |
For the engine deletion, here's my conclusion:
And an untested sample: class engine_wrapper
{
public:
engine_wrapper():mEngine(new engine()) {}
py::object enter() { return py::cast(mEngine.get()); }
void exit(py::handle, py::handle, py::handle) { mEngine = nullptr; }
// forward all functions
f3d::options& getOptions() { return mEngine.getOptions(); }
// ...
private:
std::unique_ptr<f3d::engine> mEngine;
}
py::class_<f3d::engine_wrapper> engine(module, "Engine"); // note usage of engine_wrapper instead of directly the engine |
I've tested and checked many of the items |
Describe the bug
Some Python features are broken.
Let's fix them or remove the bindings before the release
To Reproduce
Engine deletion
del engine
not working (expecting the window to close)
Overwriting engine
e=f3d.Engine()
close window
e=f3d.Engine(f3d.Window.NATIVE_OFFSCREEN)
Python crashes
Closing the window manually
e=f3d.Engine()
close window
e.window.render()
Crash
Blocking interactor
e=f3d.Engine()
e.interactor.start()
Blocking Python prompt, should we? (yes)
Crashing interactor
e=f3d.Engine()
e.interactor.start()
close window manually (not using escape)
crashes
No filename when pressing
N
e=f3d.Engine()
e=f3d.loader.load_geometry("/valid/file.obj")
e.interactor.start()
press
N
=> no filename (pressing
H
shows that filename is enabled)Expected, set
ui.filename_info
first.Useless bindings?
All
xxx_animation
andxxx_camera_movement
on the interactor are unreachable ifstart()
is blockingBroken bindings (remove them?)
All
e.interactor.xxx_callback
aren't workingf3d.Engine.get_readers_info()
andf3d.Engine.get_plugins_list()
not workingNo default values
None of the default values of the C++ have been mapped, lets improve that
Python
help(f3d)
is not helpful #1019Manual
window.render()
is not working on Windows #1020Ship usd and vdb plugins in the python wheels #1139
Use exception translator in python bindings #1575
The text was updated successfully, but these errors were encountered: