View Issue Details

IDProjectCategoryView StatusLast Update
0006151DarkRadiantGeneralpublic13.01.2024 05:35
ReporterFrost_Salamander Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityrandom
Status closedResolutionfixed 
PlatformPCOSWindowsOS Version10
Product Version3.5.0 
Target Version3.6.0Fixed in Version3.6.0 
Summary0006151: Shader Clipboard source gets cleared on 'copy shader' operation
DescriptionI mentioned this in the forums, but didn't raise a bug report right away because it's difficult to reproduce: https://forums.thedarkmod.com/index.php?/topic/21638-darkradiant-350-released/&do=findComment&comment=480055

It happens reliably, just 'after a while'. Restarting DR fixes it temporarily.

So I compiled DR from source with debug, and have been working with it until the problem occurred. Then I attached the debugger and had a look. It looks like what's happening is when you select a brush face, the 'face' property of the _source property in ShaderClipboard.cpp is getting set correctly, but then cleared right after by some event from MediaBrowser.cpp. However, the 'shader' property is set by the same operation, so that gets used instead during the subsequent paste operation, and that's why I don't see the scale/position of the source face applied.

NOTE: I realize that the clipboard gets cleared as soon as you do a copy - this is happening after that, and after the face gets correctly set in the clipboard.

The thing that is triggering the clear operation is this: https://github.com/codereader/DarkRadiant/blob/6979f499f3e740aa2fc31ea09910439a614725bc/radiant/ui/mediabrowser/MediaBrowser.cpp#L189

I've included a screenshot of the debugger that shows _source about to be cleared, and the current stack. You can see that 'face' is populated before the clear() occurs.

I think that's about all I'm able to figure out on my own - if there is anything else I can try to help debug this, let me know.

Steps To Reproduce1. Open a new map and create 2 brushes
2. texture them with the same material, but scale them differently
3. Select the 'Media' tab in the properties window
4. Select a face on one of the brushes and do a copy shader operation
5. do a paste shader operation onto the other brush (face or entire brush)
6. Note that the shader is pasted using the default scale/position instead of the scale/position of the source face

7. Now select a different tab from the 'Media' tab (e.g. the 'entity' tab
8. repeat steps 4 and 5
9. Note the shader should now be pasted using the scale/position from the source face (expected behavior)
Additional InformationSee screenshot below.
TagsNo tags attached.

Relationships

related to 0006127 new Pick Shader via MMB not working. 

Activities

Frost_Salamander

Frost_Salamander

04.11.2022 22:09

reporter  

image.png (479,964 bytes)
greebo

greebo

05.11.2022 09:17

administrator   ~0015387

Thanks for the detailed rundown
Dragofer

Dragofer

05.11.2022 10:35

developer   ~0015388

Last edited: 05.11.2022 10:41

I've had this happen just with some simple blocking out of an area with brushes, mainly using clipper and vertex control mode and importing the nautical merchant ship exterior prefab from the 2.11 dev builds. My first shader copy operation between 2 adjacent slanted brushes with MMB and Ctrl + MMB, 10 mins after starting and after changing the texture of the first brush via the media browser, failed to adjust texture coordinates.
Frost_Salamander

Frost_Salamander

05.11.2022 10:40

reporter   ~0015389

OK it is in fact easy to reproduce. All you need is to do is have the Media tab selected in the Properties window. If that's not selected it works as expected. I will update the steps to reproduce.

Related Changesets

DarkRadiant: master 5cb3fb3b

05.11.2022 15:09

greebo


Details Diff
0006151: Prevent feedback loops when synchronising the media browser selection to the shader clipboard Affected Issues
0006151
mod - radiant/ui/mediabrowser/MediaBrowser.cpp Diff File
mod - radiant/ui/mediabrowser/MediaBrowser.h Diff File

DarkRadiant: master 43ac4ef6

06.11.2022 05:05

greebo


Details Diff
0006151: Unfocused nodes are added to the focus pool if they end up being selected by other means (programmatically or other features). Affected Issues
0006151
mod - radiantcore/selection/RadiantSelectionSystem.cpp Diff File
mod - test/Selection.cpp Diff File

Issue History

Date Modified Username Field Change
04.11.2022 22:09 Frost_Salamander New Issue
04.11.2022 22:09 Frost_Salamander File Added: image.png
04.11.2022 22:10 Frost_Salamander Description Updated
04.11.2022 22:13 Frost_Salamander Description Updated
04.11.2022 22:16 Frost_Salamander Description Updated
05.11.2022 09:17 greebo Status new => acknowledged
05.11.2022 09:17 greebo Note Added: 0015387
05.11.2022 10:35 Dragofer Note Added: 0015388
05.11.2022 10:35 Dragofer Note Edited: 0015388
05.11.2022 10:35 Dragofer Note Edited: 0015388
05.11.2022 10:38 Dragofer Note Edited: 0015388
05.11.2022 10:40 Dragofer Note Edited: 0015388
05.11.2022 10:40 Frost_Salamander Note Added: 0015389
05.11.2022 10:41 Dragofer Note Edited: 0015388
05.11.2022 10:51 Frost_Salamander Steps to Reproduce Updated
05.11.2022 12:32 greebo Status acknowledged => confirmed
05.11.2022 12:32 greebo Target Version => 3.6.0
05.11.2022 15:08 greebo Assigned To => greebo
05.11.2022 15:08 greebo Status confirmed => assigned
05.11.2022 15:10 greebo Status assigned => resolved
05.11.2022 15:10 greebo Resolution open => fixed
05.11.2022 15:10 greebo Fixed in Version => 3.6.0
05.11.2022 15:22 greebo Changeset attached => DarkRadiant master 5cb3fb3b
06.11.2022 05:06 greebo Changeset attached => DarkRadiant master 43ac4ef6
09.11.2022 13:17 Bikerdude Relationship added related to 0006127
13.01.2024 05:35 greebo Status resolved => closed