Perfromance Sluggish |
Post Reply |
Author | |
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
Posted: 18 July 2008 at 9:37am |
I have a project that I've been posting about over the last few days or so that is using a majority of the CJ controls. I've noticed the general performance, used with the skin control, declines greatly.
Granted, I would say I have a lot of controls on the form, and there are multiple commandbars,panes, splitters, etc... but that doesn't seem to affect it when the Skinning is turned off -so maybe that explains it and thats fine. I don't really notice any performance issues on a less complex form. However, I am having difficulties 'managing' the sluggishness. My idea is to create a screen-cover during skin change (much like window blinds when it blurs out the background and displays a logo in the center of the screen). The problem I face is that the Skin Framework control doesn't have any events to fire off and let me know when the skin change is done and performance is back to normal. Sometimes it How do you get around this? It almost seems like all the skin code fires, then continues on with the program long before the responsiveness is back. |
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
|
Just checking in to see if anyone has any input on this matter. Thanks!
|
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
When you say it's slow, do you mean when form is showing it's still not skinned?
I have a startup screen and sometimes I see that skin is removed and a second later it's back. But I have to say I see this also with other applications that have skin on my computer. Maybe it's MS related and when CPU is busy with a lot of other processes it "forgets" to finish the skin part (or it's just that my PC is slow and lots of installed programs which are running) Don't know, think we have to ask Bill himself
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
|
Actually, it shows as skinned - well, the visible controls do at least.. I have a bunch of frames, tabcontrolpages, etc... that aren't visible right away so perhaps its all of those skinning... If I remove the skinning code, it doesn't display the behavior at all.
|
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
|
I have uploaded a sample of what is occuring. This is a 73mb AVI file, so I reccomend downloading and then viewing it.
http://www.jasongoldberg.com/files/skinprob.avi I am using the commandbar button animation as a demonstration of the application's responsiveness.. notice the responsiveness stops.... then starts again, then seems to stop once more only to finally recover and become responsive... Here is the code for the skinning form which controls all of the skinning. Option Explicit Public Skin As Integer Dim SkinsList As String Public Function GetSkinList() As String() GetSkinList = Split(SkinsList, "~") End Function Private Sub Form_Load() 'Basically just loads all CJStyles, MSStyles, and Skin Directories into an array If inIDE Then Exit Sub Dim fso As New FileSystemObject Dim fld As Folder Dim fil As File Dim C As Long Dim tFld As Folder Dim D() As String Set fld = fso.GetFolder(App.Path & "\skins\") Skinner.AutoApplyNewThreads = True For Each fil In fld.Files ReDim Preserve Skins(C) Skins(C).FileLocation = fil.Path D = Split(fil.Name, ".") Skins(C).Type = Left(D(1), 1) If Skins(C).Type = "c" Then Skins(C).iniFile = "NormalBlue.ini" Skins(C).Name = D(0) SkinsList = SkinsList & D(0) & "~" C = C + 1 Next For Each tFld In fld.SubFolders ReDim Preserve Skins(C) For Each fil In tFld.Files If LCase$(Right$(fil.Name, 4)) = ".ini" Then Skins(C).iniFile = fil.Name Exit For End If Next Skins(C).FileLocation = tFld.Path Skins(C).Type = "d" Skins(C).Name = tFld.Name SkinsList = SkinsList & tFld & "~" C = C + 1 Next SkinsList = Left(SkinsList, Len(SkinsList) - 1) Set fil = Nothing Set fld = Nothing Set fso = Nothing Set tFld = Nothing End Sub Public Function ApplySkin(vHwnd As Long, Optional SkinIndex As Integer) If inIDE Then Exit Function Skinner.ExcludeModule "msctf.dll" Skinner.LoadSkin Skins(SkinIndex).FileLocation, Skins(SkinIndex).iniFile Skinner.ApplyOptions = xtpSkinApplyFrame Or xtpSkinApplyColors Skinner.ApplyWindow vHwnd End Function |
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
I watched your "movie" but it's hard to see what is happening. You could try to build a splashscreen and load all necessary code, after this you show the main form. So first lines of code (in splashscreen) will be the loading of the skin. I do it also, I have about 25 panes (attached to forms) and in the forms are functions which load (from database) to display lots of stuff. But if all loading is done and the splashscreen is hidden, the mainform will popup in a second and I don't see any glitches or what so ever.
Maybe this is an option for you?
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
|
The splash screen would seem like the clear solution, however the problem is that I can not actually detect when the skinning is completely finished to unload the splash screen. In fact, right now I have a frame cover the form when the skin is changed with a "loading..." message, but I have to use a timer to control when it disappears for now....
|
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
The splashscreen will be loaded first and after you load all items in mainform, hide splashscreen.
Private Sub Form_Load() 'of mainform
Dim visualStyle() As String On Error Resume Next visualStyle = Split(GetSetting(App.Title, "Settings", "VisualStyle", 1000), ",") SkinFramework.LoadSkin visualStyle(0), visualStyle(1) SkinFramework.Tag = visualStyle(0) & "," & visualStyle(1) SkinFramework.ApplyWindow frmMain.hWnd frmSplash.Show 'the splashscreen is already skinned, if all works well CreatePanes
LoadProgramSettings
Load...
Load...
Load...
Load...
Load...
Load... 'takes about 10 seconds to load all possible data
frmSplash.Hide
Now my mainform is showing, but it show right away, no glitches or what so ever.
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
JasonG
Groupie Joined: 07 July 2008 Status: Offline Points: 76 |
Post Options
Thanks(0)
|
Thats the thing though... if the skin takes (for example) 10 seconds to apply and become responsive, I only have about 2 seconds of loading to do.. Once everything finishes loading, the skin is still preventing the applications responsiveness.. That is why I am trying to find an event or something that will alert me that every control has been skinned properly.
|
|
Product: Xtreme SuitePro (ActiveX) 12.0.1
Platform: Windows Vista/XP Language: Visual Basic 6.0 SP6 |
|
meaningoflights
Groupie Joined: 27 October 2007 Status: Offline Points: 35 |
Post Options
Thanks(0)
|
when you find it let me know!
maybe a item for the wishlist |
|
Jeremy Thompson (MCSD)
|
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |