New development blog posts

There’s a new Panda version in town! Go and read about it here:

4 Likes

Congratulations on the new release–it looks like a good one–and thank you for all of your work on it! :slight_smile:

(It does look like it’s introduced a GUI bug to my project–but I’ll leave hunting that down for the new week, I think. I’ll probably do something along the lines of a binary search through the commits since 1.10.8 in order to find the change that caused it.)

What kind of GUI bug? Can you elaborate? Would be great to know more about it so that I will know if others report similar issues.

The only change that occurred to DirectGUI is this one to DirectOptionMenu. If the bug is related to that class, commenting this line out shuold be easier than bisecting:

There were some changes to the underlying C++ PGui implementation, though, particularly to solve some multithreaded issues.

That’s the weird thing: I saw that there was a change to DirectOptionMenu, indeed, but the bug doesn’t seem likely to be related to that.

To be specific, the tabs for one of my “TabbedFrame” instances–but just the one instance that I’ve found, not all–are misplaced for some reason. My best guess without investigating properly is that it’s related to finding the bounds of the frame. (Something that has proven problematic before in other ways.)

Reverting to 1.10.8 removes the issue, so it is likely incurred by some change between one version and the next.

All right, if my use of “git bisect” is correct, the issue seems to have been introduced in the following commit:

Specifically, it looks like the issue was introduced by the change between lines 1008 and 1014 (in the commit; lines 984 to 987 in the original), changing this:

void PGItem::
set_frame_style(int state, const PGFrameStyle &style) {
  LightReMutexHolder holder(_lock);
  // Get the state def node, mainly to ensure that this state is slotted and
  // listed as having been defined.
  NodePath &root = do_get_state_def(state);
  nassertv(!root.is_empty());

Into this:

void PGItem::
set_frame_style(int state, const PGFrameStyle &style) {
  LightReMutexHolder holder(_lock);

  slot_state_def(state);

  if (_state_defs[state]._root.is_empty()) {
    // Create a new node.
    _state_defs[state]._root = NodePath("state_" + format_string(state));
  }

Agh, I’d fixed that case for the multithreaded pipeline, but accidentally broke it for the single-threaded one. That’s annoying.

I guess the workaround might be to manually call guiobj.guiItem.getStateDef(i) for all states after creating the GUI element.

Thanks for your detective work!

It’s not a problem! :slight_smile:

Honestly, there’s a good chance that I’m doing something in a fragile way anyway. I have it somewhat in mind to go through my code and replace that approach. (It involves attempting to calculate a GUI’s bounds, potentially before the GUI has been shown.)

Still, for now I think that I’ll implement that workaround–thank you for it! :slight_smile:

[edit] And I can confirm that the workaround does, well, work! :slight_smile:

New version is out:

6 Likes

Nice work, by the looks of it–thank you for this, and for the work involved, to all the devs that contributed to this! :slight_smile:

I have the new version now installed, I believe. :slight_smile:

Thanks so much for all the work!

Here, have another release:

5 Likes

Thank you, I think that I will! :slight_smile:

Thank you for your work on this! And indeed, it looks like a pretty good update! :slight_smile:

1 Like

Is it still January? Phew! That means there’s still time to make a “review of 2021” post:

3 Likes

New release of Panda, just in time for the new PyWeek (have you registered yet?):

5 Likes

Thanks so much for this new release!

1 Like

Ah, thank you very much for the new release, and congratulations on it! :slight_smile:

  • Fix PStats GPU timing not working with newer NVIDIA drivers
  • Fix false negative in collision test when sphere is fully inside box

These two in particular are important to me, and thus I am particularly grateful for them! :slight_smile:

Indeed, it’s great to at last once again see the GPU graph working under Linux! :slight_smile:

2 Likes

Since the beginning of the year, a new shader pipeline has been announced, at the moment is there an opportunity to switch to it without building this branch? I mean something like a parameter in the configuration file or there is some other way.

No, at the moment it is still on the separate branch. We can’t merge the branch until it’s finished I’m afraid.

Happy holidays! 'Tis the season for another release and corresponding announcement! It’s a big one, so you might want to sit down for this one.

6 Likes

Wow, this is an impressive update! Well done, and thank you for it! :slight_smile:

I’m particularly excited about the update to PStats–that may well prove very useful to me! :slight_smile:

This “Motion Trails” class sounds interesting–I do wonder whether it might prove useful in my current project!

Well, I’ve installed the new version, I believe, and am enthused to see how it goes! :slight_smile:

3 Likes