快速登录:  

Forum: VirtualDJ 8.0 Technical Support

话题: New Problems with visualizations and future enhancements - Page: 1

由于该帖子的部分内容已年深日久,可能包含陈旧过时或描述错误的信息。

Initially this was reported to me as a problem from an end user.

I tested this with the VDJ camera, slideshow, and text effect. I also tested this with milkdrop8, TM, and TV. Each has it's own variety of strangeness and I don't think it is a problem with any of them. If you need me to show you how to produce crashes or other problems using these plugins, let me know but I don't think we need to go there. Should not be machine specific and easily caused problems on more than machine in Windows VDJ build 2158.

First start a completely barebones VDJ8. No effects, nothing, you know, minimize possible causes of the problem.

I am using the 2 deck VDJ default skin.

Use something as a visualization. There is weirdness for all but believe slideshow and camera survived the best. The text effect and milkdrop end up crashing. TM and TV hang and this is a clue. Since I don't think this is a problem with any of them, it should be easy for you to produce the behavior I am seeing by using break points with any of them you have the source code for and no need to try and create an explicit problem just now.

Ok blank slate with something you have the source code for set as a visualization and you are running under debugger.

1) ctrl+V - just bring the video window to start the visualization and all is good

2) take some video and drag drop it onto right deck - visualization has been moved from the master to deck 1 which is normal although try explaining to someone who does not know that :) What they see is if it was selected on the master it has just disappeared. The disappearing has nothing to do with the problem but just extra info for some who may be reading and this is in part how it was reported to me.

3) put break points on OnStop and OnStart

4) goto the left deck and hit the drop down menu. You will see whatever visualization you are using is active. Select it into the slot.

5) you will now see the vis as active on the left deck skin slot. All is still good up to this point at least from a 'it is still working' perspective.

6) with breaks points set for OnStop and OnStart. Click on the left deck slot with the active visualization. We all know that OnStop and OnStart are called when you do this and that should not happen but it is not the real problem.

7) Ok so now OnStop is called. Then OnStart is called. Your break points should remain on for OnStop and OnStart. You should be stopped at OnStart now. Set a break point for OnDraw now as well and go. Press play for debugger.

8) what you should see now, is OnDraw gets called and then OnStop looping continuously between the 2. To some degree this explains the odd behavior between plugins. Crashes, hangs, and weirdness can follow.

Once before you had some strange looping behavior for visualizations but it was worse. Maybe some side of that has come back or maybe never left. I have no idea when this might have come into being.

Now this constant OnDraw OnStop looping crashes some and weirdness for others. For TM and TV it caused a hang and may be a subtle clue. The hang comes from them being locked in OnDraw. There are all kinds of things that come into play in both TM and TV and they are not simply drawing something so a lock is appropriate. Now in OnDraw with the lock down, and it is ripped out of OnDraw with the lock down which causes a hang for them. If I remove this lock, then it does not hang but still looping in OnStop/OnDraw and in this case I am not drawing anything since OnStop was called with no corresponding OnStart.

This should be easy for you to test because all you have to do is break on the 3 mentioned. Don't put break on OnDraw right off since you don't want to keep stopping until ready. The OnStop / OnDraw loop does not happen until the deck is moved for the visualization. When it has not been move, OnStop and OnStart are still called but without problems.

If you can create this problem please let me know. I have a user on pin and needles looking for any answer. If you are having trouble recreating it let me know and can go further.

They are other things after this but this is the main thing right now.
 

发表时间 Tue 24 Feb 15 @ 12:40 pm
SBDJPRO Infinity Member since 2006
I've just followed your exact procedure and do not get the same issue. OnStop is called, then OnStart, then OnDraw is called repeatedly as expected.
 

发表时间 Tue 24 Feb 15 @ 3:22 pm
Easy here to see it happen. Do exact same thing with milkdrop. Beat on left deck button that is showing the active visualization a few times. Crash and burn on two different machines. For me just had to set break points and on click to see the problem. When you keep clicking the milkdrop active button, it should build up and crash.

Failed easy on my 2 machines. If you can;t do it on your machine find another one. OnDraw is called yes, but OnStop is also being called repeatedly after above steps. Real important to place video to make the deck move for the vis. Does not happen otherwise.
 

发表时间 Tue 24 Feb 15 @ 3:37 pm
SBDJPRO Infinity Member since 2006
Tested with a few different plugins, on 2 different machines, could not replicate your issue.

Activated video by Ctrl+V, loaded video on deck 2, selected vis on deck 1, clicked (saw it stop/start) and then continued drawing as normal. Repeated multiple times, with same effect.
 

发表时间 Tue 24 Feb 15 @ 3:44 pm
SBDJPRO Infinity Member since 2006
Just tested with the Text plugin and that worked fine for me too.
 

发表时间 Tue 24 Feb 15 @ 3:51 pm
About 4 clicks on XP or Win7 machine and it's gone. Some others should try. I figured this one was going to be simple. Perhaps you should check the code when clicking to activate vis in conjunction with deck movement.

With the text plugin bring up the user interface for it and try again.

One difference might be I don't have a controller connected...

WIth the Win7 machine I was not logged on. Can you catch the report right now for this Scott and I will do it again while logged on.
 

发表时间 Tue 24 Feb 15 @ 3:54 pm
SBDJPRO Infinity Member since 2006
I can't see anything untoward with regards to the reactivation of the visual and the deck movement.

No issue on the text plugin with the interface open (other than it doesn't automatically reopen).

I don't have any controllers hooked up either.

I have a report from you for a crash from milkdrop but sadly it lacks any useful information for me.
 

发表时间 Tue 24 Feb 15 @ 4:08 pm
With the text plugin I am not seeing a crash or lockup now, but on both machines here if you have any text displaying, it will disappear and not come back and it's still active. That tells me it got an OnStop and no OnStart and probably still getting OnDraw calls. Milkdrop still crash either machine.

WIth text effect, do all the same stuff, and bring up UI and then also the click the color button from the text UI. With that still up try clicking the left deck visualization button for text and that should crash it right off... But the fact the text is not showing is more of an indicator I think.
 

发表时间 Tue 24 Feb 15 @ 4:14 pm
SBDJPRO Infinity Member since 2006
Text loses it's text for some reason, that's why it doesn't appear to draw.

I can't get milkdrop to crash in the manner you have described, but it does appear to give me the black screen issue some people have experienced. It would appear to be a bug in the plugin.
 

发表时间 Tue 24 Feb 15 @ 4:23 pm
ChreecePRO (OEM)Member since 2014
 

发表时间 Tue 24 Feb 15 @ 4:26 pm
That would seem to indicate what I was saying about OnStop with no OnStart but OnDraw being called and you might check in that area again.

So again after doing the above, calls to OnStop and OnDraw go into an infinite loop for me. When I have a lock on it hangs like ripped out of OnDraw into something else. With no lock on, it does nothing since OnStop has been called with no OnStart and my OnDraw knows that. Seems like with lock on, it is in OnDraw and OnStop may be being called before OnDraw has returned and hang occurs.

Since it's erratic a threading issue is suspect and everything is normal here unless the deck gets moved.
 

发表时间 Tue 24 Feb 15 @ 4:27 pm
SBDJPRO Infinity Member since 2006
Don Moir wrote :
That would seem to indicate what I was saying about OnStop with no OnStart but OnDraw being called and you might check in that area again.


I can assure you that is not the case. It's worth noting in case you hadn't noticed that the OnStart being called is actually in a new instance of the plugin and hence follows the initialisation as such.

Don Moir wrote :
So again after doing the above, calls to OnStop and OnDraw go into an infinite loop for me


Still been unable to replicate with any machine or plugin here. The only one I have issues with there is Milkdrop, and that's almost certainly the plugin itself.
 

发表时间 Tue 24 Feb 15 @ 5:10 pm
djcelPRO InfinityModeratorMember since 2004
videoForceFullscreen = value ?
 

发表时间 Tue 24 Feb 15 @ 5:52 pm
Yeah it loads more than once. I have some code in there to detect multiple loads on the same deck. In the case of visualizations this was not working right and the reason for the looping in OnStop and OnDraw for me. That is still odd to me but now know more or less about it. When I pulled that code no hangs and no odd looping so will look more at that tomorrow.

So I am assuming now that vis loads up to 3 times accounting for 2 decks and the master and guess they stay loaded. Have not checked to much about but know it loads multiple times and the switch happens between these instances when needed. For me I have deck specific data which allows for multiple data sets per deck / master. Each instance typically is specific to a deck or master except visualizations. It makes sense to me that you have a left and right deck you can different data for each. Especially when you have a different user interface for each so that is how I have it set up. You can have a different camera on left and right etc without renaming.

So now I am trying to identify the vis as something unique. To me it makes sense to have a single instance of it and not multiples but that is something you decided for whatever reason. I could go ahead and share the data between instances of the vis now but problem is....

HRESULT hr = GetInfo ("get_deck 'master' ? true : false",&query);

query is always true for a vis no matter where it is. A bug? So we have 3 possible instances being loaded that might be a vis or might not be and possible detection problem.

Just putting this up quick before going to bed. Would be nice to know where this is all going. I mean we stuck with 3 instances of the vis or what?

I realize now I think what causes the text effect to crash. This was some behavior I did not quite understand earlier. The automatic shut down of the UI that is when clicking as explained. I mentioned above to do the same dance with text as vis and load a video. Bring up the text effect UI from the master. Click the color button and leave the color dialog up. On left deck select text effect and click. Should crash. When you click like that, VDJ is closing the user interface and that color dialog appears to be lost. You can do same via midi as well but a little harder. The automatic closing of the user interface like that is another surprise for user but I do understand I think why you do it but. I think with this 3 instance swapping what you going to do with it.

With milkdrop it is 3 quick clicks every time. Since it happens every time here, I can run some test for you if you want.
 

发表时间 Tue 24 Feb 15 @ 11:20 pm
PachNPRO InfinityMember since 2009
I can reproduce it exactly like Don described.
OS is Win 8.1.

This is what I'm doing, with Milkdrop selected as Viz effect for Audio only files.

1. CTRL + V to open video window.
2. Drag a video into deck 2
3. Open effects on deck 1 and select Milkdrop
4. Click to deactive Milkdrop
5. Click to activate Milkdrop
6. Click to deactive Milkdrop
7. Crash

Im offline at the moment, but could attach the crash report this evening if needed.
 

发表时间 Wed 25 Feb 15 @ 5:27 am
SBDJPRO Infinity Member since 2006
OK, as I said, there is an issue with doing that in Milkdrop. It doesn't crash for me, but gives a black screen so is clearly not happy. So put milkdrop out of the equation for now.

What about other plugins?
 

发表时间 Wed 25 Feb 15 @ 8:19 am
SBDJPRO Infinity Member since 2006
Don Moir wrote :
Yeah it loads more than once. I have some code in there to detect multiple loads on the same deck.


This has been fixed for the next build.

Don Moir wrote :
So I am assuming now that vis loads up to 3 times accounting for 2 decks and the master and guess they stay loaded.


No, one instance of the plugin is created for the visualisation slot. This instance moves as required. As mentioned above, in previous builds attempting to stop it spawned a new instance.

As for knowing if you are the vis instance or not, I'm looking into that.
 

发表时间 Wed 25 Feb 15 @ 9:06 am
Thank you Scott... I was worried about the multi instance thing and so now I will relax on that until next build.

You asked about other plugins. I only tested the ones mentioned above and you know about that mostly.

o - camera holds together pretty well but it turns off when you click the left deck active link and does not come back on until you click it again. So acts like a toggle on and off. Hopefully when you have this all ready VDJ will not allow for activate / deactivate for a vis if it is not intended to work. When I mention to users that you cannot turn a vis off, they are usually surprised and it makes no sense to call OnStop / OnStart for them if you can't stop it from the UI or elsewhere without removing it as the vis.

o - slideshow seems ok

o - with the text effect it is very easy to crash but you have to have the color dialog up for it's UI. So easy to repeat but not likely for user to do.

In all cases, if you have the UI up on say master and it does the switch to left deck and then you click, it shuts down the UI abruptly which is a strange user experience.
 

发表时间 Wed 25 Feb 15 @ 9:29 am
PachNPRO InfinityMember since 2009
Didn't crash with b2162 anymore :)
 

发表时间 Thu 26 Feb 15 @ 3:29 am
Yep, looks ok now for the severe problems.

Still not possible to detect visualization and still weirdness about vis sharing deck / master skin slot.

Ideally I think, when and if there is a visible skin slot for visualizations, it should be at the same level as deck or master, and would not be
sharing the deck / master skin slot.

This GetInfo ("get_deck 'master' ? true : false",&query) still always returns true for a vis.

When I first started with VDJ8, I wondered why GetInfo ("get_deck",&query) just did not return 0 if it was on the master instead of having to use a separate syntax for it.

I don't know if get deck has any relevance if on master. I don't know if get deck will have relevance for a vis eventually but it might.

I would have thought a better detection scheme would be:

GetInfo ("get_deck",&query) ; query is 0 for master, query is -1 for visualization, otherwise it's a deck.

If get master was working for a vis, then you can detect like that, but Scott had mentioned new script for this. So now we could have something like:

get deck, get master, and get visualisation, instead of having a single syntax for all.

Even if this eventually gets all worked out, please consider what happens to a vis when the vis is changed. Suppose the former vis has it's UI up. For a non vis, the plugin will not be unloaded. But if you unload the vis with it's UI up, it will suddenly disappear which is strange.
 

发表时间 Thu 26 Feb 15 @ 6:35 am
95%