Skip to content

Conversation

@asturur
Copy link
Member

@asturur asturur commented May 1, 2022

Stateful requires cloning and keep track of copies of properties.
It extends to

  • statefulCache
  • fire object:modified for state changes
  • text size invalidation

Now statefulCache requires a lot of deep checks and is a bit slow, is disabled by default since long and is easily not needed if the developer uses the set method to set props and values. An easy let go.

object:modified was weird.
You would set fill = red from blue. Nothing would happen.
Then if you would execute a transformation, with no results color change would still be detected and object modified would fire. Was partial and a bit useless.
As for the cache, we could fire object:modifed when using set method over the sateProperties ( to be discussed )

For invalidating text size changes we will be clear in docs that now using the set method is necessary, and we will use the same logic we use for dirty prop.

Missing

[ ] adapt tests
[ ] Write text alternative

}
}
return false;
},
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this goes all away?
https://github.com/fabricjs/fabric.js/pull/7920/files#diff-216444c1bc3837d560c8241c4d9643b6de8c147095081c5b38715b9e058c24cbL427
if is not statefulCache, return false, stop there.
The rest of the code was executed only if the group had statefullCache activated. Since it is no more possible to activate it, all of this function becomes just a callSuper, and so it can be removed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand and I don't even know what statefulCache is about

Copy link
Member Author

@asturur asturur May 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

statefulCache determine that there is a cache invalidation comparing all the properties of the object with a copy of those when the cache was created. It is slow bothersome since you are looking for a fast iteration over objects and render a cached copy instead you have to navigate the object structure and verify if something changed.

Copy link
Contributor

@ShaMan123 ShaMan123 May 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I need to answer this question.
Group invalidation is done in Object#_set, this piece of code is an artifact, and a damaging one too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it wasn't a question :D it was more what i was trying to answer to with the comment.
I would expect a reader does not get automatically why a large chunk of code is deleted

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I need to answer this question. Group invalidation is done in Object#_set, this piece of code is an artifact, and a damaging one too.

Group invalidation works if you use set. if you didn't use it, this piece of code was looking for you, with an extensive comparing of the children objects. From today you are forced to use set

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@asturur asturur changed the title Remove stateful concept ( without passing for deprecation ) first. Remove stateful concept ( without passing for deprecation first ). May 1, 2022
@stale
Copy link

stale bot commented Jun 12, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue marked as stale by the stale bot label Jun 12, 2022
@ShaMan123 ShaMan123 removed the stale Issue marked as stale by the stale bot label Jun 13, 2022
@stale
Copy link

stale bot commented Jun 28, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue marked as stale by the stale bot label Jun 28, 2022
@ShaMan123 ShaMan123 removed the stale Issue marked as stale by the stale bot label Jun 28, 2022
@ShaMan123 ShaMan123 mentioned this pull request Jul 23, 2022
@stale
Copy link

stale bot commented Jul 30, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue marked as stale by the stale bot label Jul 30, 2022
@ShaMan123 ShaMan123 removed the stale Issue marked as stale by the stale bot label Aug 1, 2022
@stale
Copy link

stale bot commented Sep 21, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue marked as stale by the stale bot label Sep 21, 2022
@ShaMan123 ShaMan123 removed the stale Issue marked as stale by the stale bot label Sep 21, 2022
@ShaMan123 ShaMan123 mentioned this pull request Oct 16, 2022
@stale
Copy link

stale bot commented Oct 29, 2022

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs 😔. Thank you for your contributions.

@stale stale bot added the stale Issue marked as stale by the stale bot label Oct 29, 2022
@ShaMan123 ShaMan123 added v6 and removed stale Issue marked as stale by the stale bot labels Oct 29, 2022
@ShaMan123
Copy link
Contributor

#8573

@ShaMan123 ShaMan123 closed this May 8, 2023
@asturur asturur deleted the remove-stateful branch April 15, 2025 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants