COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 08-17-2010, 09:37 PM   #1
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default WDL in the wild

As of 8/16/2010, Cockos WDL is available as a Git repository.

If you are a WDL user, you can clone the Cockos repository to create your own working copy of the code. When Cockos WDL is updated, you can use Git to selectively choose to merge in any or all changes that you want to incorporate into your own code.

If you are a WDL user and you use Git for your own source code control, you can add the Cockos WDL repository as a remote, following Justin's instructions here. This will let you manage your own code, and also selectively merge in changes from Cockos WDL.

Here's where it gets interesting: if you are a WDL user and you have improved WDL with local modifications, please feel free to host your own repository of WDL (or IPlug or any submodule of WDL)! You can use GitHub, Google Code, any other public source code repository service*, or your own personal server. If any group of WDL users wants to create a shared repository, that's fine too.**

The Git vision is that everyone who has something to add to WDL (including Cockos) will host their own repository, and everyone who uses WDL (including Cockos) will, over time, add the repositories of trusted coders as a remote. That way we can all look at each others' improvements, and pull any changes we like into our own code.

So, have at it! WDL is officially in the wild. We look forward to seeing what happens!


* Please make sure to read and understand the license terms of any commercial source code repository service.

** The Git vision is that there is no centralization, and therefore no politics about who is trusted to change the code and who isn't. Shared repositories can be good if they increase the trustability of that particular location, but bad if they exclude valuable contributors from becoming known.
schwa is offline   Reply With Quote
Old 08-19-2010, 07:50 AM   #2
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

I have followed Justin's instructions, and added WDL as a remote. After that I have created a new branch (tale), in which I have committed a couple of changes. I have uploaded the updated repository to my own webserver:

http://www.taletn.com/WDL.git

Could someone with a little more Git experience than me please check if this works? I can clone my own repository, so it does seem to work.
Tale is offline   Reply With Quote
Old 08-19-2010, 10:36 AM   #3
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

Looks good!

Code:
$ git remote add tale_wdl http://www.taletn.com/WDL.git

$ git branch -r | grep tale
  tale_wdl/master
  tale_wdl/tale

$ git log -n 1 tale_wdl/tale
commit c9a55cfe46fd0616c64108ff01f428519ca110c1
Author: tale
Date:   Thu Aug 19 16:11:36 2010 +0200

    Fix a couple of typos / small bugs.
schwa is offline   Reply With Quote
Old 08-19-2010, 12:15 PM   #4
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Cool, thanks!

I have just updated my repository with all my modifications. I guess now would be a good time for me to check if they actually compile and work after migrating them to Git.
Tale is offline   Reply With Quote
Old 08-19-2010, 03:25 PM   #5
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

I'm having trouble reading it... Perhaps you need to rename the file:

http://www.taletn.com/WDL.git/hooks/post-update.sample

to

http://www.taletn.com/WDL.git/hooks/post-update

(and chmod +x it) ?

(and manually run git-update-server-info too)
Justin is offline   Reply With Quote
Old 08-19-2010, 03:53 PM   #6
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Ok, I see. I already thought this was going too easy... I have simply uploaded the WDL.git bare repository folder to my webserver, but I haven't actually installed Git on that server. I guess I really need to have Git installed there, right?
Tale is offline   Reply With Quote
Old 08-19-2010, 04:16 PM   #7
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

I was able to read your repository fine earlier, but not any more.

[edit] if you just copy the repository to the server, I think people can read it (not sure), but if you want to make your server repository a working bare repository that you can actually push changes to (much more useful ), you do need git on the server.
schwa is offline   Reply With Quote
Old 08-19-2010, 04:24 PM   #8
RRokkenAudio
Human being with feelings
 
RRokkenAudio's Avatar
 
Join Date: Jun 2009
Location: Buffalo, NY
Posts: 777
Default

I read it fine, right after schwa initially did. Just tried, read fine.



~Rob.
RRokkenAudio is offline   Reply With Quote
Old 08-19-2010, 06:29 PM   #9
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

Hmm it might not be git-update-server-info.. not sure what is going on there, I can clone sometimes, but can't fetch, too.. something awry...
Justin is offline   Reply With Quote
Old 08-20-2010, 02:17 AM   #10
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

I did do "git update-server-info" locally, before I uploaded, but I am not sure if that is good enough.

Quote:
Originally Posted by schwa View Post
if you just copy the repository to the server, I think people can read it (not sure)
Apparently not, I guess, although I don't (yet) understand why.

Quote:
Originally Posted by schwa View Post
but if you want to make your server repository a working bare repository that you can actually push changes to (much more useful ), you do need git on the server.
This is probably also safer, because now I have to swap the updated and outdated repository each time I upload it, so for a very short moment during the swap it is unavailable. I assume Git would take care this if I push changes.

Anyway, I think I will have to either install Git on my webserver, or move things over to a Git hosting website.
Tale is offline   Reply With Quote
Old 08-20-2010, 08:24 AM   #11
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

Quote:
Originally Posted by Tale View Post
I did do "git update-server-info" locally, before I uploaded, but I am not sure if that is good enough.


Apparently not, I guess, although I don't (yet) understand why.


This is probably also safer, because now I have to swap the updated and outdated repository each time I upload it, so for a very short moment during the swap it is unavailable. I assume Git would take care this if I push changes.

Anyway, I think I will have to either install Git on my webserver, or move things over to a Git hosting website.
Yeah, or maybe run git update-server-info locally and rsync -- if it is invalid for a moment then anybody fetching at that time can refetch I'm sure. Depending on your web server's distribution, installing git can be pretty trivial (sudo apt-get install git-core).
Justin is offline   Reply With Quote
Old 08-20-2010, 12:05 PM   #12
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

I think I have found the problem. I had originally "imported" (cloned) WDL into my master branch. Then I created my own branch in which I committed a bunch of changes. Without merging this branch into the master branch, I then "exported" (cloned) my WDL version to my website. Wrong?

I have now merged my branch into the master branch. Hopefully things will now work as expected.
Tale is offline   Reply With Quote
Old 08-20-2010, 12:43 PM   #13
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

rrokken, what's that interface?
schwa is offline   Reply With Quote
Old 08-20-2010, 01:11 PM   #14
RRokkenAudio
Human being with feelings
 
RRokkenAudio's Avatar
 
Join Date: Jun 2009
Location: Buffalo, NY
Posts: 777
Default

That would be Smart Git 1.5 sir....

~Rob.
RRokkenAudio is offline   Reply With Quote
Old 08-20-2010, 04:59 PM   #15
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 15,749
Default

Tale, I'm looking through your mods, great stuff!
schwa is offline   Reply With Quote
Old 08-21-2010, 04:23 AM   #16
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Thanks! The original isn't that bad either.
Tale is offline   Reply With Quote
Old 08-22-2010, 10:26 AM   #17
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

I just spent all day gitting and committing.

All my IPlug additions are now here:

http://evenharmonic.com/WDL.git

well, if it worked that is, typing this:

git clone http://evenharmonic.com/WDL.git

makes a directory called WDL with a .git inside, which is not quite the same as I get from the cockos one.

Anyway I am now going to drink beer.
cc_ is offline   Reply With Quote
Old 08-22-2010, 12:35 PM   #18
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Cool!

Quote:
Originally Posted by cc_ View Post
well, if it worked that is, typing this:

git clone http://evenharmonic.com/WDL.git

makes a directory called WDL with a .git inside, which is not quite the same as I get from the cockos one.
Your repository seems to work just fine, and 100% like The Cockos One. BTW, I learned from Schwa that you can add a "." to have Git clone in the current directory (so you get .git and WDL instead of WDL/.git and WDL/WDL):

git clone http://evenharmonic.com/WDL.git .

Quote:
Originally Posted by cc_ View Post
Anyway I am now going to drink beer.
You sure deserve it after all that Git.
Tale is offline   Reply With Quote
Old 08-22-2010, 03:50 PM   #19
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

Cool, cc_ and Tale! Both trees look pretty good -- I noticed though that there is some duplicated work (that causes conflicts). Would one of you (or both of you) like to go merge eachothers work, and then I can pull that merged to our tree?
Justin is offline   Reply With Quote
Old 08-22-2010, 06:02 PM   #20
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

OK, I've merged tale's branch into our WDL's "next" branch, along with a few other small updates. cc_, your changes look good, but there was some conflict with tale's (relating to right click UI stuff I think), and on OS X at least things I compiled crashed (if you would like a crash report, let me know).. If you want to merge our next branch to yours, that might be good...

-Justin
Justin is offline   Reply With Quote
Old 08-23-2010, 12:14 AM   #21
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Yes, send the crash log! I only switched to the latest WDL yesterday. so maybe there's a problem there.

I took a look at tale's right click code. It's probably cleaner than mine, so I'll take that.

But the main conflict is the whole of the OSX prompt handling stuff, I started it, oli took mine and modded it, tale took oli's and modded it then I took bits of tales and added it back into mine! Mine does more than tale's (Combo boxes, editable text field), so I couldn't use his stuff directly.

I'm not sure the best way forward from here.
cc_ is offline   Reply With Quote
Old 08-23-2010, 03:02 AM   #22
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by cc_ View Post
But the main conflict is the whole of the OSX prompt handling stuff, I started it, oli took mine and modded it, tale took oli's and modded it then I took bits of tales and added it back into mine! Mine does more than tale's (Combo boxes, editable text field), so I couldn't use his stuff directly.
I have added the combo box to my Carbon code just before I switched to Git, so it should be in there now. No editable text field though.

Quote:
Originally Posted by cc_ View Post
I'm not sure the best way forward from here.
Well, I guess could merge my branch with WDL's "next" branch, and then try to merge your editable text field code into it.
Tale is offline   Reply With Quote
Old 08-23-2010, 03:13 AM   #23
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

If you have the Combobox working for all cases then I'm happy to try and merge the Editable text field in.

Then I can bin my code and any problems are your fault
cc_ is offline   Reply With Quote
Old 08-23-2010, 03:21 AM   #24
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Oh yeah, the other thing that I didn't like about your code (last time I looked) is you have duplicated code at the end of the edit in Cocoa, Carbon and Win that could be in IGraphics.cpp . I have the function IGraphics::SetFromStringAfterPrompt(char *txt) to do that stuff. Actually, I guess that's the code that ended up in your Carbon and Cocoa code.

Maybe there some duplication in Carbon and Cocoa that could have been in IGraphicsMac too, I can't remember.
cc_ is offline   Reply With Quote
Old 08-23-2010, 03:32 AM   #25
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by Justin View Post
OK, I've merged tale's branch into our WDL's "next" branch, along with a few other small updates.
I noticed that you have merged all of my changes, which fine by me. But I should perhaps warn you about a couple of changes, because they may break compatibility with existing projects:

8da3756 When state chunks are enabled, use SerializeState() for a patch, and SerializePresets() for a bank.
Before this change SerializeState() was called for both patches and banks.

178c4fe Drop JPEG support.
I have completely dropped JPEG support in IPlug, because I only use PNG images.

964e261 Customized Xcode project file
Although I have added some useful stuff (macro defines), I have also dropped a bunch of code I don't need (e.g. JPEG stuff), but which others may need.
Tale is offline   Reply With Quote
Old 08-23-2010, 03:54 AM   #26
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by cc_ View Post
Oh yeah, the other thing that I didn't like about your code (last time I looked) is you have duplicated code at the end of the edit in Cocoa, Carbon and Win that could be in IGraphics.cpp . I have the function IGraphics::SetFromStringAfterPrompt(char *txt) to do that stuff. Actually, I guess that's the code that ended up in your Carbon and Cocoa code.
Actually there is a lot of duplicate code in the IGraphicsWin.cpp, IGraphicsCarbon.cpp, and IGraphicsCocoa.mm. This could use some cleaning up (move duplicate defines over to IGraphics.h, move some member variables to IGraphics, perhaps even move some code to IGraphics and add a couple of pure virtual methods). However, my original goal was to let the Windows version be, and to make the Carbon and Cocoa verions as much like the Windows version as possible.
Tale is offline   Reply With Quote
Old 08-23-2010, 04:17 AM   #27
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Yes, I figured that's why you did it. I guess that cleaning needs doing before I try adding the editable text otherwise I'll just be making more stuff to clean up later.
cc_ is offline   Reply With Quote
Old 08-23-2010, 10:21 AM   #28
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

Sorry if I got overzealous.

Quote:
Originally Posted by Tale View Post
I noticed that you have merged all of my changes, which fine by me. But I should perhaps warn you about a couple of changes, because they may break compatibility with existing projects:

8da3756 When state chunks are enabled, use SerializeState() for a patch, and SerializePresets() for a bank.
Before this change SerializeState() was called for both patches and banks.
Yeah, on this maybe there should be a default implementation of () that just calls SerializeState()?

Quote:

178c4fe Drop JPEG support.
I have completely dropped JPEG support in IPlug, because I only use PNG images.
Yeah, I sort of figured "who uses JPG?" .. maybe it makes sense to have two projects with varying levels of inclusion. Or include the jpeglib files and have them unused and let the linker do the work.

Quote:

964e261 Customized Xcode project file
Although I have added some useful stuff (macro defines), I have also dropped a bunch of code I don't need (e.g. JPEG stuff), but which others may need.
This is why I included those updates, mostly -- the VST_FORCE_DEPRECATED definitions, etc..

Anyway, I guess I'll do some customization for our tree relating to the JPEG support.

Edit: OK, I've updated our next tree with JPEG support returned, but keeping the other project edits. So now we just need to find a good backwards compatible way of handling SerializePresets() and we should be good, eh?

Last edited by Justin; 08-23-2010 at 10:50 AM.
Justin is offline   Reply With Quote
Old 08-23-2010, 01:09 PM   #29
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by Justin View Post
Sorry if I got overzealous.


Quote:
Originally Posted by Justin View Post
Yeah, on this maybe there should be a default implementation of () that just calls SerializeState()?
Quote:
Originally Posted by Justin View Post
Edit: OK, I've updated our next tree with JPEG support returned, but keeping the other project edits. So now we just need to find a good backwards compatible way of handling SerializePresets() and we should be good, eh?
Right. I don't think SerializePresets() is used anywhere else, so it is tempting to simply change it to:

Code:
bool IPlugBase::SerializePresets(ByteChunk* pChunk) { return SerializeState(pChunk); }
However, this could still break compatibility with an existing project if it happens to call SerializePresets() internally. So I guess it would be better to leave SerializePresets() be (and make it non-virtual again), and add a new virtual method instead, and call that new method for effGetChunk.

EDIT: Tried it here locally, it seems to work. Now I have to figure out how to pull the Cockos WDL's next branch without messing up my own master branch. And then what? Should I publish my own next branch, so you guys at Cockos can pull it, or can I push things to you?

Last edited by Tale; 08-23-2010 at 01:47 PM.
Tale is offline   Reply With Quote
Old 08-23-2010, 02:17 PM   #30
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

Quote:
Originally Posted by Tale View Post




Right. I don't think SerializePresets() is used anywhere else, so it is tempting to simply change it to:

Code:
bool IPlugBase::SerializePresets(ByteChunk* pChunk) { return SerializeState(pChunk); }
However, this could still break compatibility with an existing project if it happens to call SerializePresets() internally. So I guess it would be better to leave SerializePresets() be (and make it non-virtual again), and add a new virtual method instead, and call that new method for effGetChunk.

EDIT: Tried it here locally, it seems to work. Now I have to figure out how to pull the Cockos WDL's next branch without messing up my own master branch. And then what? Should I publish my own next branch, so you guys at Cockos can pull it, or can I push things to you?
You can fetch our stuff (assuming we're a remote called "cockos"), then look at our logs (git log cockos/next). Once you have that, you can merge our branch in, or cherry-pick our edits. I'll keep an eye on your branch and see if there's stuff that makes sense to merge in.

I've just updated ours with support for defining IPLUG_NO_JPEG_SUPPORT, which prevents IPlug from loading JPEGs (which should also cause the linker to throw away all the JPEG related code on link, hopefully).
Justin is offline   Reply With Quote
Old 08-23-2010, 03:34 PM   #31
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by Justin View Post
You can fetch our stuff (assuming we're a remote called "cockos"), then look at our logs (git log cockos/next). Once you have that, you can merge our branch in, or cherry-pick our edits. I'll keep an eye on your branch and see if there's stuff that makes sense to merge in.
Ok, I think I get it. Thanks.

EDIT: I have fetched the Cockos next branch, made a few changes (SerializePresets, Win SDK 7 makefile), and cloned it to my website (also in a next branch). BTW, you certainly will not want to merge in my "567d9fe Added IPLUG_NO_JPEG_SUPPORT to IPlug Xcode project".

Quote:
Originally Posted by Justin View Post
I've just updated ours with support for defining IPLUG_NO_JPEG_SUPPORT, which prevents IPlug from loading JPEGs (which should also cause the linker to throw away all the JPEG related code on link, hopefully).
Yeah, that will work for sure. I like!

Last edited by Tale; 08-23-2010 at 04:56 PM.
Tale is offline   Reply With Quote
Old 08-24-2010, 12:47 AM   #32
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Tale, do you plan to clean up the duplicate code in the user input any time soon? For the editable text control the only bit that matters is in PromptUserInput() - just move the common code into IGraphicsMac.mm like I did in my version below. I guess this code could actually be in IGraphics.cpp and used by the windows version too, but that would be a bigger change.

This has all happened at the worst possible time for me, as your code is now in wdl I want to use that, but for me the editable text control is not optional (without it users can't download their licenses!). Meanwhile I'm gearing up to release my first paid for IPlug based plugin, and have all the beta testers lined up waiting!

Code:
void IGraphicsMac::PromptUserInput(IControl* pControl, IParam* pParam,bool editableText)
{
  if (mEdControl) { // paranoia
    if (pControl != mEdControl) {
      if (mGraphicsCocoa) 
        [((IGRAPHICS_COCOA*)mGraphicsCocoa) EndUserEdit];
       else if (mGraphicsCarbon)
        mGraphicsCarbon->EndUserEdit();
     }
     else {
       return;    
     }
  }

  if (!pControl || (!pParam && !editableText)) {
    return;
  }

  IRECT* pR = pControl->GetRECT();
  IRECT r(pR->L,pR->T,pR->R,pR->B);

  int yAdj = 0;
  bool editable=true;
  bool secure=false;
  const char *currentStr;
  char buf[MAX_PARAM_LEN];

  int n = 0;
  if (editableText) {
    currentStr = ((IEditableTextControl *)pControl)->GetText();
    editable = ((IEditableTextControl *)pControl)->IsEditable();
    secure   = ((IEditableTextControl *)pControl)->IsSecure();
  }
  else {
    pParam->GetDisplayForHost(buf);
    currentStr = buf;
    n = pParam->GetNDisplayTexts();  
    r.T = MAX(0,r.T - 3);
    r.B = r.T + PARAM_EDIT_H + 6;
    r.R = r.L + PARAM_EDIT_W;
    if (n) {
      // calculate combo box width
      int w = PARAM_LIST_MIN_W; 
      for (int i = 0; i < n; ++i) {
        const char* str = pParam->GetDisplayText(i);
        w = MAX(w, PARAM_LIST_MIN_W + strlen(str) * PARAM_LIST_W_PER_CHAR);
      }
      r.R = r.L + w;
    }
  }

  if (mGraphicsCocoa) {
    [((IGRAPHICS_COCOA*)mGraphicsCocoa) MakeInputPrompt:&r 
          p:pParam s:currentStr ed:editable sec:secure];
  }
  else if (mGraphicsCarbon) {
    mGraphicsCarbon->MakeInputPrompt(&r,pParam,currentStr,editable,secure);
  }
  mEdControl = pControl;
  mEdParam = pParam;  
}
cc_ is offline   Reply With Quote
Old 08-24-2010, 03:23 AM   #33
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by cc_ View Post
Tale, do you plan to clean up the duplicate code in the user input any time soon? For the editable text control the only bit that matters is in PromptUserInput() - just move the common code into IGraphicsMac.mm like I did in my version below. I guess this code could actually be in IGraphics.cpp and used by the windows version too, but that would be a bigger change.
Actually I have the afternoon free (it's my sister's birthday), so I have some spare time. I will clean things up, the Windows version as well, and then push it to my public repository, so you can pull the changes from there. I will let you know when I am ready.
Tale is offline   Reply With Quote
Old 08-24-2010, 04:01 AM   #34
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Great!

And Happy Birthday to your sister!
cc_ is offline   Reply With Quote
Old 08-24-2010, 05:01 AM   #35
l0calh05t
Human being with feelings
 
l0calh05t's Avatar
 
Join Date: Nov 2008
Location: Darmstadt, Germany
Posts: 673
Default

Seriously... did you have to choose git? It's so awkward.

Anyways, a few small suggestions (since I haven't really figured out the whole GIT thingy yet...):

1. How about switching to CMake? this would make sure added files only need to be added once into the CMakeLists.txt and not for each project file individually -> less management effort. It would also make configuration of builds without specific parts (like jpeg support) much easier, and you compilation time would be reduced by not even compiling in the support, instead of letting the linker do it. Locally I have been using CMake for a few weeks now, and switching to VS2010 only involved running cmake again (same for 64 bit). By using find_package, it would also be easier to use custom builds of libpng (for example using the current release) easier.

2. I would change the IPlugBase constructor to make it NDEBUG compatible (move strstr out of assert). This shaves off ~200kb for each plugin for me.

3. Add license/copyright info to every IPlug file. This was already mostly done for WDL, but not IPlug.

EDIT: Ok, after figuring out how to get the next branch, I see that 2. was already done. So I wasn't the only one to run into that problem.
__________________
Raw data for raw nerves | 1.05946309...
My Blog | My free VST plugins | WDL-OL CMake fork

Last edited by l0calh05t; 08-24-2010 at 05:07 AM.
l0calh05t is offline   Reply With Quote
Old 08-24-2010, 07:11 AM   #36
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Quote:
Originally Posted by Tale View Post
Actually I have the afternoon free (it's my sister's birthday), so I have some spare time. I will clean things up, the Windows version as well, and then push it to my public repository, so you can pull the changes from there. I will let you know when I am ready.
Another thing... if while you're at it you can think of a cleaner way to add the editable text stuff, let me know. The way I have at the moment is kind of nasty.
cc_ is offline   Reply With Quote
Old 08-24-2010, 08:26 AM   #37
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

Quote:
Originally Posted by cc_ View Post
Another thing... if while you're at it you can think of a cleaner way to add the editable text stuff, let me know. The way I have at the moment is kind of nasty.
I had somehow already forgotten that cleaning up the duplicate code and member variables means object hell. IGraphicsCocoa and IGraphicsCarbon aren't children of IGraphics, so if you move all duplicate member variables to IGraphics, you can't reach them from IGraphicsCocoa and IGraphicsCarbon. And even when you can, your code becomes almost unreadable because of all the pointer overrides. So I am cleaning up only tiny bits of duplicate stuff.

Meanwhile, because I got stuck with cleaning up anyway, I am manually merging in your IEditableTextControl into my next branch.
Tale is offline   Reply With Quote
Old 08-24-2010, 08:33 AM   #38
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

Heh, I was hoping that was going to happen

And yes I had forgotten that object hell too, but now I remember why I only combined as far as IGraphicsMac!
cc_ is offline   Reply With Quote
Old 08-24-2010, 02:20 PM   #39
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,645
Default

I have finished manually merging in cc_'s IEditableTextControl.

Added features:

+ Call DisablePrompt() to disable input.
+ The edit box uses the alignment, font, font size (and on Windows font style) of the text control.

Known issues:

* [Windows] You cannot type beyond the width of the edit box.
* [Mac OS X] Bold and italic font styles are not supported.
* [Carbon] When the text box is read-only you can't select the text nor copy it.
* [Cocoa] Because the text box follows the control's size, the control needs to be relatively high.

You can fetch this from the "next" branch of my repository, along with a few other, minor changes.
Tale is offline   Reply With Quote
Old 08-24-2010, 11:49 PM   #40
cc_
Human being with feelings
 
Join Date: Mar 2009
Posts: 256
Default

You're star! Have grabbed it...
cc_ is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 09:05 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.